python 操作数据库插入json 文件

python 使用第三方库 pymysql 连接本地数据库遍历 json 文件插入数据

安装 MySql

在使用 PyMySQL 之前,我们需要确保 PyMySQL 已经安装,可以使用命令安装最新版本的数据库。

1
$ pip3 install PyMySQL

也可以使用 git 命令下载安装包安装:

1
2
3
$ git clone https://github.com/PyMySQL/PyMySQL
$ cd PyMySQL/
$ python3 setup.py install

数据库连接

连接数据库之前我们可以先创建一个数据库。

1
2
3

创建数据库(支持中文)
create database TEST default charset utf8 collate utf8_general_ci;

接下来我们使用 python 连接数据库,创建游标对象。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import json
import pymysql

db = pymysql.connect("localhost","root","root","TEST" ,charset='utf8')


# 之前在插入汉字的时候没有加(charset='utf8)这个参数,在插入中文时会触发错误 '

cursor = db.cursor()
js = [
{
"title": "宏亚大厦",
"priceDesc": "11月二手房参考均价",
"totalPrice": "10495元/m2",
"link": "https://cd.lianjia.com/xiaoqu/1617724539153508/",
"region": "金牛",
"detailDesc": "(金牛一品天下)蜀汉路259号",
"Building_age": "暂无信息 ",
"Building_Type": "板楼",
"Property_cost": "暂无信息",
"Property_company": "暂无信息",
"Developer": "暂无信息",
"number_buildings": "1栋",
"number_houses": "12户"
},
...
{
"title": "吉宝凌云峰阁",
"priceDesc": "11月二手房参考均价",
"totalPrice": "27778元/m2",
"link": "https://cd.lianjia.com/xiaoqu/1611062923844/",
"region": "锦江",
"detailDesc": "(锦江攀成钢)汇泉南路333号",
"Building_age": "2015年建成 ",
"Building_Type": "板楼",
"Property_cost": "4.6至6.5元/平米/月",
"Property_company": "第一太平戴维斯物业顾问有限公司",
"Developer": "成都希瑞房地产开发有限公司",
"number_buildings": "8栋",
"number_houses": "1626户"`
}
]
# 我们根据 json 文件创建数据表

create_sql = CREATE TABLE IF NOT EXISTS xiaoquinfo_table (
title varchar(20) PRIMARY KEY,
region varchar(256),
detailDesc varchar(256),
Building_age varchar(256),
Building_Type varchar(256),
Property_cost varchar(256),
Property_company varchar(256),
Developer varchar(256),
number_buildings varchar(256),
number_houses varchar(256))
# 执行sql语句
cursor.execute(create_sql)
# 提交到数据库执行
db.commit()

for x in js:
# 遍历js 字典将值取出保存在一个列表里面
value = ((x['title'],
x['region'],
x['detailDesc'],
x['Building_age'],
x['Building_Type'],
x['Property_cost'],
x['Property_company'],
x['Developer'],
x['number_buildings'],
x['number_houses']
))

# sql 插入语句

sql = 'INSERT INTO TEST(title,region, detailDesc, Building_age, Building_Type,Property_cost,Property_company,Developer,number_buildings,number_houses)VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)'


try:
# 执行sql语句
cursor.execute(sql,value) # 将之前 js 值的列表传入

# 提交到数据库执行
db.commit()
except Exception as e:
print(e)
# 如果发生错误则回滚
db.rollback()
# 关闭数据库连接
db.close()
-------------本文结束感谢您的阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!