# coding=utf-8 ''' Created on 2016-10-26 @author: Jennifer Project:讀取mysql數據庫的數據,轉爲json格式 ''' import json,MySQLdb def TableToJson(): try: #1-7:如何使用python DB API訪問數據庫流程的 #1.建立mysql數據庫鏈接對象connection #connection對象支持的方法有cursor(),commit(),rollback(),close() conn = MySQLdb.Connect(host='mysql服務器地址',user='用戶名',passwd='密碼',db='數據庫名稱',port=3306,charset = 'utf8') #2.建立mysql數據庫遊標對象 cursor #cursor對象支持的方法有execute(sql語句),fetchone(),fetchmany(size),fetchall(),rowcount,close() cur = conn.cursor() #3.編寫sql sql = "SELECT pm.name AS nm,pm.desc AS dc,pm.image_url AS iu,pm.image_type AS it, pm.on_going AS og, pm.type AS mt,pm.pkgName AS pn,pm.apk_url AS du,pm.apkMd5 AS am,pm.minversionCode AS mc,pm.versionCode AS vc,pm.versionName AS vn, pm.signatureMd5 AS sm,pm.source AS se,pm.action AS ao FROM message pm WHERE pm.id = '217'" #4.執行sql命令 #execute可執行數據庫查詢select和命令insert,delete,update三種命令(這三種命令須要commit()或rollback()) cur.execute(sql) #5.獲取數據 #fetchall遍歷execute執行的結果集。取execute執行後放在緩衝區的數據,遍歷結果,返回數據。 #返回的數據類型是元組類型,每一個條數據元素爲元組類型:(('第一條數據的字段1的值','第一條數據的字段2的值',...,'第一條數據的字段N的值'),(第二條數據),...,(第N條數據)) data = cur.fetchall() print u'fetchall()返回的數據:',data #6.關閉cursor cur.close() #7.關閉connection conn.close() jsonData = [] #循環讀取元組數據 #將元組數據轉換爲列表類型,每一個條數據元素爲字典類型:[{'字段1':'字段1的值','字段2':'字段2的值',...,'字段N:字段N的值'},{第二條數據},...,{第N條數據}] for row in data: result = {} result['nm'] = row[0] result['dc'] = row[1] result['iu'] = row[2] result['it'] = str(row[3]) result['og'] = str(row[4]) result['mt'] = str(row[5]) result['pn'] = row[6] result['du'] = row[7] result['am'] = row[8] result['mc'] = str(row[9]) result['vc'] = str(row[10]) result['vn'] = row[11] result['sm'] = row[12] result['se'] = str(row[13]) result['ao'] = str(row[14]) jsonData.append(result) print u'轉換爲列表字典的原始數據:',jsonData except: print 'MySQL connect fail...' else: #使用json.dumps將數據轉換爲json格式,json.dumps方法默認會輸出成這種格式"\u5377\u76ae\u6298\u6263",加ensure_ascii=False,則可以防止中文亂碼。 #JSON採用徹底獨立於語言的文本格式,事實上大部分現代計算機語言都以某種形式支持它們。這使得一種數據格式在一樣基於這些結構的編程語言之間交換成爲可能。 #json.dumps()是將原始數據轉爲json(其中單引號會變爲雙引號),而json.loads()是將json轉爲原始數據。 jsondatar=json.dumps(jsonData,ensure_ascii=False) #去除首尾的中括號 return jsondatar[1:len(jsondatar)-1] if __name__ == '__main__': #調用函數 jsonData = TableToJson() print u'轉換爲json格式的數據:',jsonData #以讀寫方式w+打開文件,路徑前加r,防止字符轉義 f = open(r'D:\getui\getuidata.txt','w+') #寫數據 f.write(jsonData) #關閉文件 f.close()
轉載:http://www.cnblogs.com/yufeihlf/p/6004124.htmlhtml