真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

使用Python向MySQL數(shù)據(jù)庫(kù)中存入json類(lèi)型數(shù)據(jù)-創(chuàng)新互聯(lián)

0.說(shuō)明

成都創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:做網(wǎng)站、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿(mǎn)足客戶(hù)于互聯(lián)網(wǎng)時(shí)代的興慶網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

    因?yàn)槌鲇趥€(gè)人項(xiàng)目的需要,獲取到的數(shù)據(jù)都是json類(lèi)型的,并且都要存入MySQL數(shù)據(jù)庫(kù)中,因?yàn)閖son類(lèi)型數(shù)據(jù)不像一般的文本數(shù)據(jù),所以在存入MySQL時(shí)需要注意的問(wèn)題很多。

    在網(wǎng)上找了很多方法,整理了一下比較實(shí)用可靠的,總結(jié)下來(lái)就是下面的過(guò)程:

  • MySQL表中需要保證存儲(chǔ)json數(shù)據(jù)的列類(lèi)型為BLOB;

  • 使用sql語(yǔ)句時(shí),使用MySQLdb.excape_string函數(shù)來(lái)對(duì)json數(shù)據(jù)進(jìn)行轉(zhuǎn)義;

  • 查詢(xún)數(shù)據(jù)時(shí),將結(jié)果使用json.loads就能夠得到原來(lái)的Python數(shù)據(jù)類(lèi)型;

    下面就來(lái)實(shí)戰(zhàn)一下,實(shí)際上,在我的需求中,我需要將Python中的字典存入MySQL,所以只能先將其轉(zhuǎn)換為json來(lái)處理。


1.實(shí)戰(zhàn)存儲(chǔ)json數(shù)據(jù)到MySQL中

(1)數(shù)據(jù)存儲(chǔ)

  • 1.創(chuàng)建能存儲(chǔ)json數(shù)據(jù)類(lèi)型的數(shù)據(jù)庫(kù)表

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數(shù)據(jù)類(lèi)型

>>> import json >>> d = {'name': 'xpleaf'} >>> type(d) >>> d_json = json.dumps(d) >>> d_json '{"name": "xpleaf"}' >>> type(d_json)
  • 3.使用MySQLdb連接MySQL數(shù)據(jù)庫(kù)

>>> import MySQLdb >>> conn = m.connect(host='localhost', port=3306, user='root', passwd='123456', db='spyinux')>>> cur = conn.cursor()
  • 4.寫(xiě)原生sql語(yǔ)句

>>> tsql = "insert into jsondata(data) values('{json}')";
  • 5.使用MySQLdb方法轉(zhuǎn)義json數(shù)據(jù)

>>> sql = tsql.format(json=MySQLdb.escape_string(d_json)); >>> sql 'insert into jsondata(data) values(\'{\\"name\\": \\"xpleaf\\"}\')'
  • 6.執(zhí)行sql語(yǔ)句

>>> cur.execute(sql) 1L >>> cur.execute(sql) 1L

(2)數(shù)據(jù)查詢(xún)

    上面的操作完成之后,我們已經(jīng)成功將json的數(shù)據(jù)存取到MySQL中,關(guān)鍵是能不能將該數(shù)據(jù)取出來(lái),并且最后還原成Python的字典類(lèi)型類(lèi)型。

  • 1.先在MySQL中查詢(xún)存儲(chǔ)的數(shù)據(jù)

mysql> select * from jsondata; +----+--------------------+ | id | data               | +----+--------------------+ |  1 | {"name": "xpleaf"} | +----+--------------------+ 1 row in set (0.00 sec)
  • 2.在Python交互器中查詢(xún)數(shù)據(jù)

>>> 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數(shù)據(jù)

>>> mydata = json.loads(mydata) >>> mydata {u'name': u'xpleaf'} >>> type(mydata) >>> mydata['name'] u'xpleaf' >>> mydata.get('name') u'xpleaf'

    可以看到,最開(kāi)始我們使用Pythonn創(chuàng)建了一個(gè)字典類(lèi)型的數(shù)據(jù),之后將其轉(zhuǎn)換為json數(shù)據(jù)類(lèi)型,以便于存入MySQL中,在這個(gè)過(guò)程中需要使用MySQL.escape_string方法來(lái)對(duì)json數(shù)據(jù)進(jìn)行轉(zhuǎn)義,最后查詢(xún)數(shù)據(jù)時(shí),我們使用json.loads方法來(lái)解析json數(shù)據(jù),從而得到我們最開(kāi)始存儲(chǔ)的Python字典類(lèi)型數(shù)據(jù)。


2.在實(shí)際當(dāng)中的應(yīng)用

    顯然,如果在使用Python的過(guò)程中,需要將字典或其它數(shù)據(jù)類(lèi)型的數(shù)據(jù)存入到MySQL中時(shí),先將其轉(zhuǎn)換為json類(lèi)型數(shù)據(jù),再使用上面的方法,就非常簡(jiǎn)便了。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。


文章題目:使用Python向MySQL數(shù)據(jù)庫(kù)中存入json類(lèi)型數(shù)據(jù)-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://weahome.cn/article/ddghjs.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部