使⽤Python向MySQL数据库中存⼊json类型数据
0.说明
因为出于个⼈项⽬的需要,获取到的数据都是json类型的,并且都要存⼊MySQL数据库中,因为json类型数据不像⼀般的⽂本数据,所以在存⼊MySQL时需要注意的问题很多。
在⽹上了很多⽅法,整理了⼀下⽐较实⽤可靠的,总结下来就是下⾯的过程:
MySQL表中需要保证存储json数据的列类型为BLOB;
使⽤sql语句时,使⽤ape_string函数来对json数据进⾏转义;
查询数据时,将结果使⽤json.loads就能够得到原来的Python数据类型;
下⾯就来实战⼀下,实际上,在我的需求中,我需要将Python中的字典存⼊MySQL,所以只能先将其转换为json来处理。
1.实战存储json数据到MySQL中
(1)数据存储
1.创建能存储json数据类型的数据库表
mysql> create table jsondata
-> (
-> id int(6) auto_increment primary key,
-> data blob(1024)
-> );
Query OK, 0 rows affected (0.25 sec)
python请求并解析json数据mysql> show tables;
+-------------------+
| Tables_in_spyinux |
+-------------------+
什么又称便利抽样法| jsondata          |
| test              |
+-------------------+
2 rows in set (0.00 sec)
mysql> describe jsondata;
+-------+--------+------+-----+---------+----------------+
| Field | Type  | Null | Key | Default | Extra          |
+-------+--------+------+-----+---------+----------------+excel教程大全百度云
| id    | int(6) | NO  | PRI | NULL    | auto_increment |
| data  | blob  | YES  |    | NULL    |                |
vim三种工作模式
+-------+--------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
java开发主要工作内容2.使⽤Python⽣成json数据类型
>>> import json
>>> d = {'name': 'xpleaf'}
>>> type(d)
<type 'dict'>
>>> d_json = json.dumps(d)
>>> d_json
'{"name": "xpleaf"}'
>>> type(d_json)
<type 'str'>
3.使⽤MySQLdb连接MySQL数据库
>>> import MySQLdb
>>> conn = m.connect(host='localhost', port=3306, user='root', passwd='123456', db='spyinux')>>> cur = conn.cursor()
4.写原⽣sql语句
>>> tsql = "insert into jsondata(data) values('{json}')";
5.使⽤MySQLdb⽅法转义json数据
>>> sql = tsql.format(json=MySQLdb.escape_string(d_json));
>>> sql
'insert into jsondata(data) values(\'{\\"name\\": \\"xpleaf\\"}\')'
6.执⾏sql语句
>>> ute(sql)
1L
>>> ute(sql)
1L
(2)数据查询
上⾯的操作完成之后,我们已经成功将json的数据存取到MySQL中,关键是能不能将该数据取出来,并且最后还原成Python的字典类型类型。
1.先在MySQL中查询存储的数据
mysql> select * from jsondata;
+----+--------------------+
| id | data              |
+----+--------------------+
|  1 | {"name": "xpleaf"} |
+----+--------------------+
1 row in set (0.00 sec)
2.在Python交互器中查询数据
>>> ute('select * from jsondata');
1L
>>> mydata = cur.fetchall()
>>> mydata
((1L, '{"name": "xpleaf"}'),)
>>> mydata = mydata[0][1]
>>> mydata
'{"name": "xpleaf"}'
>>> type(mydata)
<type 'str'>
3.使⽤json.loads解析json数据
>>> mydata = json.loads(mydata)
>>> mydata
{u'name': u'xpleaf'}
>>> type(mydata)
<type 'dict'>
>>> mydata['name']
u'xpleaf'
>>> ('name')
u'xpleaf'
可以看到,最开始我们使⽤Pythonn创建了⼀个字典类型的数据,之后将其转换为json数据类型,以便于存⼊MySQL中,在这个过程中需要使⽤MySQL.escape_string⽅法来对json数据进⾏转义,最后查询数据时,我们使⽤json.loads⽅法来解析json数据,从⽽得到我们最开始存储的Python字典类型数据。
2.在实际当中的应⽤
显然,如果在使⽤Python的过程中,需要将字典或其它数据类型的数据存⼊到MySQL中时,先将其转换为json类型数据,再使⽤上⾯的⽅法,就⾮常简便了。pg库字符串转数字

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。