在网上找到一个包含全国各省市经纬度的json文件,也可以通过上次的办法,解析json关键字,构造SQL语句,插入数据库。

JSON文件格式如下:

[
{
"name": "北京市",
"log": "116.46",
"lat": "39.92",
"children": [
{ "name": "北京", "log": "116.46", "lat": "39.92" },
{ "name": "平谷", "log": "117.1", "lat": "40.13" },
{ "name": "密云", "log": "116.85", "lat": "40.37" },
{ "name": "顺义", "log": "116.65", "lat": "40.13" },
{ "name": "通县", "log": "116.67", "lat": "39.92" },
{ "name": "怀柔", "log": "116.62", "lat": "40.32" },
{ "name": "大兴", "log": "116.33", "lat": "39.73" },
{ "name": "房山", "log": "115.98", "lat": "39.72" },
{ "name": "延庆", "log": "115.97", "lat": "40.47" },
{ "name": "昌平", "log": "116.2", "lat": "40.22" }
]
}, ……
……
…… {
"name": "海南省",
"log": "110.35",
"lat": "20.02",
"children": [
{ "name": "海口", "log": "110.35", "lat": "20.02" },
{ "name": "琼山", "log": "110.33", "lat": "19.98" },
{ "name": "文昌", "log": "110.72", "lat": "19.61" },
{ "name": "定安", "log": "110.31", "lat": "19.68" },
{ "name": "琼海", "log": "110.46", "lat": "19.25" },
{ "name": "万宁", "log": "110.39", "lat": "18.8" },
{ "name": "屯昌", "log": "110.1", "lat": "19.36" },
{ "name": "澄迈", "log": "110", "lat": "19.75" },
{ "name": "儋县", "log": "109.57", "lat": "19.52" },
{ "name": "临高", "log": "109.69", "lat": "19.91" },
{ "name": "保亭", "log": "109.7", "lat": "18.64" },
{ "name": "白沙", "log": "109.44", "lat": "19.23" },
{ "name": "琼中", "log": "109.83", "lat": "19.05" },
{ "name": "陵水", "log": "110.02", "lat": "18.48" },
{ "name": "崖县", "log": "109.5", "lat": "18.25" },
{ "name": "乐东", "log": "109.17", "lat": "18.73" },
{ "name": "东方", "log": "108.64", "lat": "19.09" },
{ "name": "昌江", "log": "109.03", "lat": "19.25" }
]
}]

首先,需要将json转为dict,然后取出json中的关键字。

考虑到json中每个省有经纬度,同时嵌套了省内城市的经纬度,因此这里计划在数据库中创建如下表结构:

【省名】【经度】【维度】【市名】【经度】【维度】

所以,需要将json中的内容整合拼接一下,输出一个list,每个元素对应上面的表头,然后取出每个元素,作为insert into语句的入参。

下面是代码:

#python 3.6
# -*- coding:utf-8 -*-
__author__ = 'BH8ANK' import json
import pymysql conn = pymysql.connect(
host='localhost', # mysql服务器地址
port=3306, # 端口号
user='root', # 用户名
passwd='xxxxx', # 密码
db='xdb', # 数据库名称
charset='utf8', # 连接编码,根据需要填写
)
cur = conn.cursor() # 创建并返回游标 # 根据文件内容创建表头
sql_1 = "CREATE TABLE jingweidu (prov VARCHAR(32),log VARCHAR(100),lat VARCHAR(100),city VARCHAR(100),clog VARCHAR(100),clat VARCHAR(100));"
#cur.execute(sql_1)#执行上述sql命令,首次运行时,需要执行上面的语句,用于创建table a = open(r"D:\alldata.json", "r",encoding='UTF-8')
out = a.read()
tmp = json.dumps(out)
tmp = json.loads(out)
x = len(tmp)
# print(tmp)
# print(x)
i = 0
while i < x:
M = tmp[i] E = [M['name'],M['log'],M['lat']]
# print(E)
j = len(M['children'])
k = 0
while k < j:
F = [M['children'][k]['name'],M['children'][k]['log'],M['children'][k]['lat'],]
H = E + F
# print(H[0])
sql_2 = "insert into jingweidu (prov,log,lat,city,clog,clat) values (" + "'"+H[0]+"'" +","+ "'"+H[1]+"'" + ","+"'"+H[2]+"'" + ","+"'"+H[3]+"'" + ","+"'"+H[4]+"'" + ","+"'"+H[5]+"'" + ");"
print(sql_2)
cur.execute(sql_2) # 执行上述sql命令
k = k + 1
conn.commit() print("============")
i = i+1 conn.close()

执行完成后效果如下图:

【python 3.6】python读取json数据存入MySQL(二)的更多相关文章

  1. 【python 3.6】python读取json数据存入MySQL(一)

    整体思路: 1,读取json文件 2,将数据格式化为dict,取出key,创建数据库表头 3,取出dict的value,组装成sql语句,循环执行 4,执行SQL语句 #python 3.6 # -* ...

  2. 【python 2.7】python读取json数据存入MySQL

    同上一篇,只是适配 CentOS+ python 2.7 #python 2.7 # -*- coding:utf-8 -*- __author__ = 'BH8ANK' import json im ...

  3. 关于mapreducer 读取hbase数据 存入mysql的实现过程

    mapreducer编程模型是一种八股文的代码逻辑,就以用户行为分析求流存率的作为例子 1.map端来说:必须继承hadoop规定好的mapper类:在读取hbase数据时,已经有现成的接口 Tabl ...

  4. php+phpspreadsheet读取Excel数据存入mysql

    先生成Excel模板,然后导入Excel数据到mysql,每条数据对应图片上传到阿里云 <?php /** * Created by PhpStorm. * User: Administrato ...

  5. 用python导入20个G的json数据到Mysql数据库

    整体思路参考资料:https://blog.csdn.net/layman2016/article/details/79252499 作业:有一个16个G的跟疫情相关的json新闻大数据(articl ...

  6. Java 和 Python 解析动态 key 的 JSON 数据

    一.概述 解析JSON过程中,什么情况都可能遇到.遇到特殊的情况,不会怎么办?肯定不是设计的问题,一定是你的姿势不对. 有这样一种JSON需要解析: { "b3444533f6544&quo ...

  7. iOS彩票项目--第七天,初次读取json数据、KVC转模型技巧、运行时字典转模型以及初步对显示网页的操作并且跟踪标签

    一.初次读取json数据 二.KVC转模型技巧,这里的技巧主要解决的是字典中的key 与 模型中有的属性对应不起来的时候 的解决办法 <方法1> <方法2>运行时字典转模型,运 ...

  8. Java学习-029-JSON 之三 -- 模仿 cssSelector 封装读取 JSON 数据方法

    前文简单介绍了如何通过 json-20141113.jar 提供的功能获取 JSON 的数据,敬请参阅:Java学习-028-JSON 之二 -- 数据读取. 了解学习过 JQuery 的朋友都知道, ...

  9. ajax读取json数据

    首先建立json.txt文件 { "programmers": [ { "firstName": "Brett", "lastNa ...

随机推荐

  1. MySQL索引优化经验总结

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引 ...

  2. C#设计模式 —— 单例模式

    嗯,这是本人的第一篇随笔,就从最简单的单例模式开始,一步一步地记录自己的成长. 单例模式是最常见的设计模式之一,在项目代码中几乎随处可见.这个设计模式的目的就是为了保证实例只能存在一个.单例模式往下还 ...

  3. (Les16 执行数据库恢复)-表空间恢复

    NOARCHIVELOG模式下丢失了数据文件     数据库处于NOARCHIVELOG模式时,如果丢失任何数据文件,执行以下步骤         1.如果实例尚未关闭,请关闭实例         2 ...

  4. android学习:自动识别文本文件编码格式

    /** * 判断文件的编码格式 * @param fileName :file * @return 文件编码格式 * @throws Exception */ public static String ...

  5. 字体在mac win 系统如何优雅的展示

    我们知道,不同的操作系统,不同的浏览器,页面字体的显示和渲染存在差异. 那么如何设置font-family,能够使字体在不同的环境下,也拥有好的展示效果? 1.操作系统中字体默认的字体 windows ...

  6. docker_Dockerfile_docker hub简单使用搭建nginx

    Docker for Windows是Docker for Microsoft Windows 的Community Edition(CE).要下载Docker for Windows,请前往Dock ...

  7. scrapy管道MySQL简记

    import pymysqlfrom scrapy.exceptions import DropItemimport time class ErshouchePipeline(object): def ...

  8. Python实现创建字典

    编写一个名为 make_album() 的函数,它创建一个描述音乐专辑的字典.1.这个函数应接受歌手的名字和专辑名,并返回一个包含这两项信息的字典.使用这个函数创建三个表示不同专辑的字典,并打印每个返 ...

  9. 在Java中发送http的post请求,设置请求参数等等

    前几天做了一个定时导入数据的接口,需要发送http请求,第一次做这种的需求,特地记一下子, 导包 import java.text.SimpleDateFormat;import java.util. ...

  10. 企业案例:查找当前目录下所有文件,并把文件中的https://www.cnblogs.com/zhaokang2019/字符串替换成https://www.cnblogs.com/guobaoyan2019/

    企业案例:查找当前目录下所有文件,并把文件中的https://www.cnblogs.com/zhaokang2019/字符串替换成https://www.cnblogs.com/guobaoyan2 ...