【python 3.6】python读取json数据存入MySQL(二)
在网上找到一个包含全国各省市经纬度的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(二)的更多相关文章
- 【python 3.6】python读取json数据存入MySQL(一)
整体思路: 1,读取json文件 2,将数据格式化为dict,取出key,创建数据库表头 3,取出dict的value,组装成sql语句,循环执行 4,执行SQL语句 #python 3.6 # -* ...
- 【python 2.7】python读取json数据存入MySQL
同上一篇,只是适配 CentOS+ python 2.7 #python 2.7 # -*- coding:utf-8 -*- __author__ = 'BH8ANK' import json im ...
- 关于mapreducer 读取hbase数据 存入mysql的实现过程
mapreducer编程模型是一种八股文的代码逻辑,就以用户行为分析求流存率的作为例子 1.map端来说:必须继承hadoop规定好的mapper类:在读取hbase数据时,已经有现成的接口 Tabl ...
- php+phpspreadsheet读取Excel数据存入mysql
先生成Excel模板,然后导入Excel数据到mysql,每条数据对应图片上传到阿里云 <?php /** * Created by PhpStorm. * User: Administrato ...
- 用python导入20个G的json数据到Mysql数据库
整体思路参考资料:https://blog.csdn.net/layman2016/article/details/79252499 作业:有一个16个G的跟疫情相关的json新闻大数据(articl ...
- Java 和 Python 解析动态 key 的 JSON 数据
一.概述 解析JSON过程中,什么情况都可能遇到.遇到特殊的情况,不会怎么办?肯定不是设计的问题,一定是你的姿势不对. 有这样一种JSON需要解析: { "b3444533f6544&quo ...
- iOS彩票项目--第七天,初次读取json数据、KVC转模型技巧、运行时字典转模型以及初步对显示网页的操作并且跟踪标签
一.初次读取json数据 二.KVC转模型技巧,这里的技巧主要解决的是字典中的key 与 模型中有的属性对应不起来的时候 的解决办法 <方法1> <方法2>运行时字典转模型,运 ...
- Java学习-029-JSON 之三 -- 模仿 cssSelector 封装读取 JSON 数据方法
前文简单介绍了如何通过 json-20141113.jar 提供的功能获取 JSON 的数据,敬请参阅:Java学习-028-JSON 之二 -- 数据读取. 了解学习过 JQuery 的朋友都知道, ...
- ajax读取json数据
首先建立json.txt文件 { "programmers": [ { "firstName": "Brett", "lastNa ...
随机推荐
- 【算法学习】AVL平衡二叉搜索树原理及各项操作编程实现(C语言)
#include<stdio.h> #include "fatal.h" struct AvlNode; typedef struct AvlNode *Positio ...
- 【.net开发者自学java系列】使用Eclipse开发SpringMVC(2)
大概熟悉了 Eclipse. 然后先上Spring MVC 官网看看. 可是英文太差?翻译咯.现在翻译可屌了,真高兴生活在现在科技发达的时代.活着在中国太美好了. 没出过国门就能看懂英文.我都崇拜自己 ...
- oracle安装程序异常终止解决办法
安装Oracle时总是会报程序异常终止,摸不着头脑,作为初学者一下就乱了分寸 工具/原料 Oracle软件包 win764位 方法/步骤 右击Oracle安装图标setup.exe,选 ...
- [iOS]CIDetector之CIDetectorTypeFace人脸识别
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typica ...
- 小白的Unity5之路(一)
Player移动: public float speed = 6f; Vector3 movement; Rigidbody playerRididbody; void FixedUpdate () ...
- vim编辑器操作汇总
VIM - Vi IMproved 7.4 编辑器操作汇总 vim [参数] [文件 ..] 编辑指定的文件 或: vim [参数] - 从标准输入(stdi ...
- Laravel源码解析--看看Lumen到底比Laravel轻在哪里
在前面一篇<Laravel源码解析--Laravel生命周期详解>中我们利用xdebug详细了解了下Laravel一次请求中到底做了哪些处理.今天我们跟 Lumen 对比下,看看 Lume ...
- c# 在WebBrowser中用SendMessage模拟鼠标点击
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- mysql主键重复,不抱错,只更新的骚操作 (如果没有插入,如果有更新)
平时我们在设计数据库表的时候总会设计 unique 或者 给表加上 primary key 的限制条件. 此时 插入数据的时候 ,经常会有这样的情况: 我们想向数据库插入一条记录: 若数据表中存在以 ...
- ubuntu系统部署python3.6.4
Ubuntu的版本为16.04,系统自带的Python版本较低,使用亲本版本3.6.4,下为安装步骤: 一.官网下载Python3.6.4版本 新建目录: sudo mkidr /usr/local/ ...