Python mysql表數(shù)據(jù)和json格式的相互轉(zhuǎn)換

今天碰到了一個比較奇葩的需求眯停,將mysql表數(shù)據(jù)轉(zhuǎn)換成json格式济舆。我順便研究了一下,寫了個python莺债。


  • 數(shù)據(jù)庫相關(guān)的基本操作
  • 如果使用python操作mysql
    滋觉,要我說,數(shù)據(jù)庫操作學會了之后齐邦,會節(jié)省很多很多時間椎侠。

SQL數(shù)據(jù)--->json數(shù)據(jù)

#!/usr/bin/env python
#-*- coding: utf8 -*-

import MySQLdb
import json

# 定義查詢SQL語句
sql = "SELECT id,NAME,LOCAL,mobile,CreateTime FROM db1.s1;"

# 設(shè)置列的別名或者直接用表字段名:(下面的sql含有別名)

# sql="SELECT s.id AS 1_id,s.name AS 2_na,s.local AS 3_lo,s.mobile AS 4_mo,s.CreateTime AS 5_ct FROM db1.s1 s;"


# 定義連接MySQL的登錄信息(此處以字典形式)
Loginfo = {'USER':'admin', 'PSWD':'admin', 'HOST':'10.10.60.108', 'PORT':4001}


# Python 連接MySQL
conn=MySQLdb.connect(host=Loginfo['HOST'],user=Loginfo['USER'],passwd=Loginfo['PSWD'],port=Loginfo['PORT'],charset='utf8')
cur=conn.cursor()
cur.execute(sql)                        # 執(zhí)行SQL查詢
data = cur.fetchall()                   # 查詢結(jié)果給data。如果執(zhí)行:print data 顯示結(jié)果:((第一行內(nèi)容)措拇,(第二行內(nèi)容)我纪,(第三行內(nèi)容),(第四行內(nèi)容))
fields = cur.description               # 獲取查詢結(jié)果中列的字段名丐吓,如果查詢SQL中使用別名浅悉,此處顯示別名。       
cur.close()
conn.close()

# Main 
column_list = []                        # 定義字段名的列表
for i in fields:
    column_list.append(i[0])    # 提取字段名券犁,追加到列表中
#print column_list          # 列表顯示結(jié)果:['id', 'NAME', 'LOCAL', 'mobile', 'CreateTime']

with open('/data/scripts/logdb/json.txt','w+') as f:  # 打開輸出結(jié)果文件
    for row in data:                   # 一次循環(huán)术健,row代表一行,row以元組的形式顯示粘衬。
        result = {}                   # 定義Python 字典
        result[column_list[0]] = row[0]          # 將row中的每個元素荞估,追加到字典中咳促。 
        result[column_list[1]] = str(row[1])       # Python字段格式 和json字段格式轉(zhuǎn)換
        result[column_list[2]] = str(row[2]) 
        result[column_list[3]] = row[3]
        result[column_list[4]] = str(row[4])
        jsondata=json.dumps(result,ensure_ascii=False) # Python的dict --轉(zhuǎn)換成----> json的object
        f.write(jsondata + '\n')             # 寫入文件
f.close()         

注意:最后輸出結(jié)果勘伺,列的順序是隨機的跪腹。

如果想要順序輸出:1.字段起別名,比如:1_xx,2_xx,3_xx.....然后在在json.dumps中利用:sort_keys=True排序娇昙,結(jié)果就順序輸出尺迂。

例如:

print json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True)

{"a": 0, "b": 0, "c": 0}

json格式--->sql語句

#!/usr/bin/env python
#-*- coding: utf8 -*-

import MySQLdb
import json

datalist = []                      # python 列表
with open('/data/scripts/logdb/json.txt','r') as f:
    for line in f:                    # 讀取json文件中的行(也就是json的object)   
        datalist.append(json.loads(line))        # 將json的object轉(zhuǎn)成 Python的dict,追加到Python 列表中, 結(jié)果都是unicode格式:[{},{},{},{},{}] 
for dict in datalist:
    print dict                     # 打印顯示 轉(zhuǎn)換后的結(jié)果

for dict in datalist:
    dict[u'LOCAL'] = dict[u'LOCAL'].replace('\r\n','\\r\\n').replace("'s","\\'s")  # 將字段中的特殊:回車換行以及's 轉(zhuǎn)換冒掌,方便形成sql語句
    sql = "insert into db1.s1 (mobile,NAME,LOCAL,CreateTime,id) values('%s','%s','%s','%s','%s');" % (dict[u'mobile'],dict[u'NAME'],dict[u'LOCAL'],str(dict[u'CreateTime']),dict[u'id'])
    print sql

本文轉(zhuǎn)自:cnblogs

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末噪裕,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子股毫,更是在濱河造成了極大的恐慌膳音,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件铃诬,死亡現(xiàn)場離奇詭異祭陷,居然都是意外死亡,警方通過查閱死者的電腦和手機趣席,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進店門兵志,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人宣肚,你說我怎么就攤上這事想罕。” “怎么了霉涨?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵按价,是天一觀的道長。 經(jīng)常有香客問我笙瑟,道長楼镐,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任往枷,我火速辦了婚禮框产,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘错洁。我一直安慰自己茅信,他們只是感情好,可當我...
    茶點故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布墓臭。 她就那樣靜靜地躺著蘸鲸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪窿锉。 梳的紋絲不亂的頭發(fā)上酌摇,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天膝舅,我揣著相機與錄音,去河邊找鬼窑多。 笑死仍稀,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的埂息。 我是一名探鬼主播技潘,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼千康!你這毒婦竟也來了享幽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤拾弃,失蹤者是張志新(化名)和其女友劉穎值桩,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體豪椿,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡奔坟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了搭盾。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片咳秉。...
    茶點故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖鸯隅,靈堂內(nèi)的尸體忽然破棺而出澜建,到底是詐尸還是另有隱情,我是刑警寧澤滋迈,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布霎奢,位于F島的核電站户誓,受9級特大地震影響饼灿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜帝美,卻給世界環(huán)境...
    茶點故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一碍彭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧悼潭,春花似錦庇忌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至占拍,卻和暖如春略就,著一層夾襖步出監(jiān)牢的瞬間捎迫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工表牢, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留窄绒,地道東北人。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓崔兴,卻偏偏與公主長得像彰导,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子敲茄,可洞房花燭夜當晚...
    茶點故事閱讀 43,562評論 2 349

推薦閱讀更多精彩內(nèi)容