JSON是一种轻量级的数据交换格式,在我们获取到的json数据之后,需要将数据存入MySQL数据库中,以便后期开发使用,那json格式如何存入mysql?下面来我们就来给大家讲解一下。
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) -> data blob(1024)
mysql > show tables; + -- -- -- -- -- -- -- -- -- - + | Tables_in_spyinux | + -- -- -- -- -- -- -- -- -- - + | jsondata | | test | + -- -- -- -- -- -- -- -- -- - + 2 rows in set(0.00 sec)
mysql > describe jsondata; + -- -- -- - + -- -- -- -- + -- -- -- + -- -- - + -- -- -- -- - + -- -- -- -- -- -- -- -- + | Field | Type | Null | Key | Default | Extra | + -- -- -- - + -- -- -- -- + -- -- -- + -- -- - + -- -- -- -- - + -- -- -- -- -- -- -- -- + | id | int(6) | NO | PRI | NULL | auto_increment | | data | blob | YES | | NULL | | + -- -- -- - + -- -- -- -- + -- -- -- + -- -- - + -- -- -- -- - + -- -- -- -- -- -- -- -- + 2 rows in set(0.00 sec)
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语句
>>> cur.execute(sql) 1 L >>> cur.execute(sql) 1 L
(2)数据查询
上面的操作完成之后,我们已经成功将json的数据存取到MySQL中,关键是能不能将该数据取出来,并且最后还原成Python的字典类型类型。
1.先在MySQL中查询存储的数据
mysql > select * from jsondata; + -- -- + -- -- -- -- -- -- -- -- -- -- + | id | data | + -- -- + -- -- -- -- -- -- -- -- -- -- + | 1 | { "name": "xpleaf" } | + -- -- + -- -- -- -- -- -- -- -- -- -- + 1 row in set(0.00 sec)
2.在Python交互器中查询数据
>>> cur.execute('select * from jsondata'); 1 L >>> mydata = cur.fetchall() >>> mydata((1 L, '{"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' >>> mydata.get('name') u 'xpleaf'
可以看到,最开始我们使用Pythonn创建了一个字典类型的数据,之后将其转换为json数据类型,以便于存入MySQL中,在这个过程中需要使用MySQL.escape_string方法来对json数据进行转义,最后查询数据时,我们使用json.loads方法来解析json数据,从而得到我们最开始存储的Python字典类型数据。
按照以上的方法就可以将json数据类型存入MySQL中,不过json不是一般的文本数据,所以我们在存入的时候一定要注意一下!最后大家如果想要了解更多json工具教程知识,敬请关注奇Q工具网。
推荐阅读: