在网上找到一个包含全国各省市经纬度的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. [NOI2015]软件包管理器(树链剖分,线段树)

    题目描述 Linux用户和OSX用户一定对软件包管理器不会陌生.通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软件包,同时自动解决所有的依赖(即下载安装这个 ...

  2. BZOJ 4520: [Cqoi2016]K远点对(k-d tree)

    Time Limit: 30 Sec  Memory Limit: 512 MBSubmit: 1162  Solved: 618[Submit][Status][Discuss] Descripti ...

  3. MySQL 日常运维业务账号权限的控制

    在MySQL数据库日常运维中,对业务子账号的权限的统一控制十分必要. 业务上基本分为读账号和写账号两种账号,所以可以整理为固定的存储过程,让数据库自动生成对应的库的账号,随机密码.以及统一的读权限,写 ...

  4. 11JavaScript事件

    JavaScript 事件 HTML 事件是发生在 HTML 元素上的事情. 当在 HTML 页面中使用 JavaScript 时, JavaScript 可以触发这些事件. 1.HTML 事件 HT ...

  5. 菜鸟级渣渣 关于MAC系统开发java的吐槽

    最开始买电脑的时候不知道为什么脑子一抽买了个苹果.因为不知道和谁聊的.后期服务器大部分都是linux系统,后期也要学linux系统.mac系统类似linux系统.然后就买了个mac,感觉凭借自己的聪明 ...

  6. Delphi高效定制格式的FormatDateTime

    本人根据歼10博主的此博文的思路进行改进,目的是高效的实现FormatDateTime('YYYY-MM-DD HH:NN:SS.ZZZ', Now); 在DelphiXE3 32Bits环境测试10 ...

  7. 5.18-笨办法学python-习题15(open等读取文件)

    from sys import argv script,filename=argv #不要忘了script(相当于一个固定变量),filename(可变变量) txt=open(filename) # ...

  8. ArrayList 一个面试题

    我们现在有一个集合,集合里面有100个随机数,获取其中的基数: //假设我们得到了100个随机数 List<Integer> lists = new RandomArrayList< ...

  9. Java使用POI导出excel(上)——基本操作

    相关的介绍参考自:http://zc985552943.iteye.com/blog/1491546 一.概述 1.概念 受上文博文博主的启发,有必要先对excel的各个概念先做了解! //上述基本都 ...

  10. 20155207实验2 Windows口令破解

    20155207实验2 Windows口令破解 实验目的 了解Windows口令破解原理 对信息安全有直观感性认识 能够运用工具实现口令破解 实验原理 口令破解方法 口令破解主要有两种方法:字典破解和 ...