【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 ...
随机推荐
- 全面理解 ASP.NET Core 依赖注入 (转载)
DI在.NET Core里面被提到了一个非常重要的位置, 这篇文章主要再给大家普及一下关于依赖注入的概念,身边有工作六七年的同事还个东西搞不清楚.另外再介绍一下.NET Core的DI实现以及对实例 ...
- CentOS7网络连接问题以及重启网络服务失败
1.重启网络服务失败 在运行“/etc/init.d/network restart”命令时,出现错误“Job for network.service failed. See 'systemctl s ...
- linux 进程间通信方式
管道: 它包括无名管道和有名管道两种,前者用于父进程和子进程间的通信,后者用于运行于同一台机器上的任意两个进程间的通信消息队列: 用于运行于同一台机器上的进程间通信,它和管道很相似,是一个在系统内核中 ...
- java String详解
创建字符串: 1. String(char a[]) char a[] = {'g','o','o','d'}; String str = new String(a); 2. String(char ...
- Oracle ddl 和 dml 操作
ddl 操作 窗口设置用户权限的方法 Oracle的数据类型 按住Ctrl点击表名 ,可以鼠标操作 插入的数据需要满足创建表的检查 主表clazz删除数据从表设置级联也会一同删除 有约束也 ...
- Navicat Premium 12 激活
链接:https://pan.baidu.com/s/1R4WB2JjKd0UYnN00CpUPSA 提取码:e3wy (破解工具及软件安装包) 破解流程:https://www.jianshu.co ...
- 【leetcode】804
import java.util.*; import java.lang.*; public class Test{ public static int fun_solve(String[] word ...
- OpenStack(queens)最小化搭建记录——控制与计算共两个节点
境: 2台安装了centos7-minimal的主机 ip地址: 10.132.226.103/24 (controller) 10.132.226.104/24 (compute1) 1.配置主机名 ...
- 用k8s构建生产环境下应用服务
1.生成镜像 见https://www.cnblogs.com/mushou/p/9713741.html,把测试成熟的应用添加到tomcat镜像生成新的镜像,用ansible部署到集群的几点服务器中 ...
- css中元素的分类
按照显示元素分类: 行内元素(lnline-element):元素的高度,行高,顶底边距由元素所包含的图片或文字所决定,不可改变:其宽度为内容文字或图片的宽度所决定,而其左右边距可人为设置. 行内元素 ...