python将json入数据库_使用Python向MySQL数据库中存入json类型数据

0.说明python

由于出于我的项目的须要,获取到的数据都是json类型的,而且都要存入MySQL数据库中,由于json类型数据不像通常的文本数据,因此在存入MySQL时须要注意的问题不少。

mysql

在网上找了不少方法,整理了一下比较实用可靠的,总结下来就是下面的过程:sql

MySQL表中须要保证存储json数据的列类型为BLOB;数据库

使用sql语句时,使用MySQLdb.excape_string函数来对json数据进行转义;json

查询数据时,将结果使用json.loads就可以获得原来的Python数据类型;ide

下面就来实战一下,实际上,在个人需求中,我须要将Python中的字典存入MySQL,因此只能先将其转换为json来处理。函数

1.实战存储json数据到MySQL中fetch

(1)数据存储spa

1.建立能存储json数据类型的数据库表orm

mysql> create table jsondata

-> (

-> id int(6) auto_increment primary key,

-> data blob(1024)

-> );

Query OK, 0 rows affected (0.25 sec)

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)

>>> d_json = json.dumps(d)

>>> d_json

'{"name": "xpleaf"}'

>>> type(d_json)

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)

1L

>>> cur.execute(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交互器中查询数据

>>> cur.execute('select * from jsondata');

1L

>>> mydata = cur.fetchall()

>>> mydata

((1L, '{"name": "xpleaf"}'),)

>>> mydata = mydata[0][1]

>>> mydata

'{"name": "xpleaf"}'

>>> type(mydata)

3.使用json.loads解析json数据

>>> mydata = json.loads(mydata)

>>> mydata

{u'name': u'xpleaf'}

>>> type(mydata)

>>> mydata['name']

u'xpleaf'

>>> mydata.get('name')

u'xpleaf'

能够看到,最开始咱们使用Pythonn建立了一个字典类型的数据,以后将其转换为json数据类型,以便于存入MySQL中,在这个过程当中须要使用MySQL.escape_string方法来对json数据进行转义,最后查询数据时,咱们使用json.loads方法来解析json数据,从而获得咱们最开始存储的Python字典类型数据。

2.在实际当中的应用

显然,若是在使用Python的过程当中,须要将字典或其它数据类型的数据存入到MySQL中时,先将其转换为json类型数据,再使用上面的方法,就很是简便了。

你可能感兴趣的:(python将json入数据库)