欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用python將mysql數(shù)據(jù)庫(kù)的數(shù)據(jù)轉(zhuǎn)換為json數(shù)據(jù)的方法

 更新時(shí)間:2019年07月01日 09:13:07   作者:啄木鳥(niǎo)兒  
這篇文章主要介紹了使用python將mysql數(shù)據(jù)庫(kù)的數(shù)據(jù)轉(zhuǎn)換為json數(shù)據(jù)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

由于產(chǎn)品運(yùn)營(yíng)部需要采用第三方個(gè)推平臺(tái),來(lái)推送消息。如果手動(dòng)一個(gè)個(gè)鍵入字段和字段值,容易出錯(cuò),且非常繁瑣,需要將mysql的數(shù)據(jù)轉(zhuǎn)換為json數(shù)據(jù),直接復(fù)制即可。

本文將涉及到如何使用Python訪問(wèn)Mysql數(shù)據(jù)庫(kù)及讀取獲取數(shù)據(jù)(前提需要安裝MySQLdb第三方庫(kù)哦),以及如何將數(shù)據(jù)轉(zhuǎn)換為json數(shù)據(jù),最后保存成文件輸出。

代碼如下:注釋比較詳細(xì)了。

# coding=utf-8
'''
Created on 2016-10-26
@author: Jennifer
Project:讀取mysql數(shù)據(jù)庫(kù)的數(shù)據(jù),轉(zhuǎn)為json格式
'''
import json,MySQLdb

def TableToJson(): 
  try:
    #1-7:如何使用python DB API訪問(wèn)數(shù)據(jù)庫(kù)流程的
    #1.創(chuàng)建mysql數(shù)據(jù)庫(kù)連接對(duì)象connection
    #connection對(duì)象支持的方法有cursor(),commit(),rollback(),close()
    conn = MySQLdb.Connect(host='mysql服務(wù)器地址',user='用戶名',passwd='密碼',db='數(shù)據(jù)庫(kù)名稱(chēng)',port=3306,charset = 'utf8') 
    #2.創(chuàng)建mysql數(shù)據(jù)庫(kù)游標(biāo)對(duì)象 cursor
    #cursor對(duì)象支持的方法有execute(sql語(yǔ)句),fetchone(),fetchmany(size),fetchall(),rowcount,close()
    cur = conn.cursor()
    #3.編寫(xiě)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.執(zhí)行sql命令
    #execute可執(zhí)行數(shù)據(jù)庫(kù)查詢select和命令insert,delete,update三種命令(這三種命令需要commit()或rollback())
    cur.execute(sql)
    #5.獲取數(shù)據(jù) 
    #fetchall遍歷execute執(zhí)行的結(jié)果集。取execute執(zhí)行后放在緩沖區(qū)的數(shù)據(jù),遍歷結(jié)果,返回?cái)?shù)據(jù)。
    #返回的數(shù)據(jù)類(lèi)型是元組類(lèi)型,每個(gè)條數(shù)據(jù)元素為元組類(lèi)型:(('第一條數(shù)據(jù)的字段1的值','第一條數(shù)據(jù)的字段2的值',...,'第一條數(shù)據(jù)的字段N的值'),(第二條數(shù)據(jù)),...,(第N條數(shù)據(jù)))
    data = cur.fetchall()
    print u'fetchall()返回的數(shù)據(jù):',data
    #6.關(guān)閉cursor
    cur.close()
    #7.關(guān)閉connection
    conn.close()
    jsonData = []
    #循環(huán)讀取元組數(shù)據(jù)
    #將元組數(shù)據(jù)轉(zhuǎn)換為列表類(lèi)型,每個(gè)條數(shù)據(jù)元素為字典類(lèi)型:[{'字段1':'字段1的值','字段2':'字段2的值',...,'字段N:字段N的值'},{第二條數(shù)據(jù)},...,{第N條數(shù)據(jù)}]
    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'轉(zhuǎn)換為列表字典的原始數(shù)據(jù):',jsonData
      
  except: 
    print 'MySQL connect fail...' 
  else:
    #使用json.dumps將數(shù)據(jù)轉(zhuǎn)換為json格式,json.dumps方法默認(rèn)會(huì)輸出成這種格式"\u5377\u76ae\u6298\u6263",加ensure_ascii=False,則能夠防止中文亂碼。
    #JSON采用完全獨(dú)立于語(yǔ)言的文本格式,事實(shí)上大部分現(xiàn)代計(jì)算機(jī)語(yǔ)言都以某種形式支持它們。這使得一種數(shù)據(jù)格式在同樣基于這些結(jié)構(gòu)的編程語(yǔ)言之間交換成為可能。
    #json.dumps()是將原始數(shù)據(jù)轉(zhuǎn)為json(其中單引號(hào)會(huì)變?yōu)殡p引號(hào)),而json.loads()是將json轉(zhuǎn)為原始數(shù)據(jù)。
    jsondatar=json.dumps(jsonData,ensure_ascii=False)
    #去除首尾的中括號(hào)
    return jsondatar[1:len(jsondatar)-1]
 
if __name__ == '__main__': 
  #調(diào)用函數(shù)
  jsonData = TableToJson() 
  print u'轉(zhuǎn)換為json格式的數(shù)據(jù):',jsonData 
  #以讀寫(xiě)方式w+打開(kāi)文件,路徑前加r,防止字符轉(zhuǎn)義
  f = open(r'D:\getui\getuidata.txt','w+')
  #寫(xiě)數(shù)據(jù)
  f.write(jsonData)
  #關(guān)閉文件 
  f.close()

執(zhí)行結(jié)果:(注代碼上方打印的數(shù)據(jù)為了方便查看數(shù)據(jù),可屏蔽,最終json數(shù)據(jù)會(huì)保存在txt文件中)

fetchall()返回的數(shù)據(jù): ((u'\u5377\u76ae\u6298\u6263', u'\u5377\u76ae\u6298\u6263', u'http://域名/push/push_d701df5f48c727df46c847fa912993cf.jpg', 3L, 0L, 1L, u'com.juanpi.ui', u'http://域名/apk_1476871813.apk', u'301e757dc6669ecc95ffaaae13bb096d', 14L, 64L, u'4.1.2', u'd1e536a6a60f414700cf3c86f28719c2', 3L, 2L),)
轉(zhuǎn)換為列表字典的原始數(shù)據(jù): [{'vc': '64', 'nm': u'\u5377\u76ae\u6298\u6263', 'mc': '14', 'og': '0', 'am': u'301e757dc6669ecc95ffaaae13bb096d', 'iu': u'http://域名/push/push_d701df5f48c727df46c847fa912993cf.jpg', 'it': '3', 'vn': u'4.1.2', 'dc': u'\u5377\u76ae\u6298\u6263', 'mt': '1', 'ao': '2', 'sm': u'd1e536a6a60f414700cf3c86f28719c2', 'du': u'http://域名/apk_1476871813.apk', 'pn': u'com.juanpi.ui', 'se': '3'}]
轉(zhuǎn)換為json格式的數(shù)據(jù): {"vc": "64", "nm": "卷皮折扣", "mc": "14", "og": "0", "am": "301e757dc6669ecc95ffaaae13bb096d", "iu": "http:/域名/push/push_d701df5f48c727df46c847fa912993cf.jpg", "it": "3", "vn": "4.1.2", "dc": "卷皮折扣", "mt": "1", "ao": "2", "sm": "d1e536a6a60f414700cf3c86f28719c2", "du": "http://域名/apk_1476871813.apk", "pn": "com.juanpi.ui", "se": "3"}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • tensorflow 只恢復(fù)部分模型參數(shù)的實(shí)例

    tensorflow 只恢復(fù)部分模型參數(shù)的實(shí)例

    今天小編就為大家分享一篇tensorflow 只恢復(fù)部分模型參數(shù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • conda創(chuàng)建環(huán)境過(guò)程出現(xiàn)"Solving?environment:?failed"報(bào)錯(cuò)的詳細(xì)解決方法

    conda創(chuàng)建環(huán)境過(guò)程出現(xiàn)"Solving?environment:?failed"報(bào)錯(cuò)的詳細(xì)解

    很長(zhǎng)一段時(shí)間沒(méi)用conda了,然后突然使用conda創(chuàng)建環(huán)境報(bào)錯(cuò),所以下面這篇文章主要給大家介紹了關(guān)于conda創(chuàng)建環(huán)境過(guò)程出現(xiàn)"Solving?environment:?failed"報(bào)錯(cuò)的詳細(xì)解決方法,需要的朋友可以參考下
    2022-11-11
  • pyqt5 獲取顯示器的分辨率的方法

    pyqt5 獲取顯示器的分辨率的方法

    今天小編就為大家分享一篇pyqt5 獲取顯示器的分辨率的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • plt.subplot()參數(shù)及使用介紹

    plt.subplot()參數(shù)及使用介紹

    本文主要介紹了plt.subplot()參數(shù)及使用介紹,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • python3 實(shí)現(xiàn)對(duì)圖片進(jìn)行局部切割的方法

    python3 實(shí)現(xiàn)對(duì)圖片進(jìn)行局部切割的方法

    今天小編就為大家分享一篇python3 實(shí)現(xiàn)對(duì)圖片進(jìn)行局部切割的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • python Dataframe 合并與去重詳情

    python Dataframe 合并與去重詳情

    這篇文章主要介紹了python Dataframe 合并與去重詳情,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定參考價(jià)值,需要的朋友可以參考一下
    2022-08-08
  • Pytorch如何打印與Keras的model.summary()類(lèi)似的輸出(最新推薦)

    Pytorch如何打印與Keras的model.summary()類(lèi)似的輸出(最新推薦)

    這篇文章主要介紹了Pytorch如何打印與Keras的model.summary()類(lèi)似的輸出,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • python+selenium操作下拉框

    python+selenium操作下拉框

    這篇文章主要介紹了python+selenium操作下拉框,下面文章圍繞python+selenium實(shí)現(xiàn)下拉框的相關(guān)資料展開(kāi)全文章詳細(xì)內(nèi)容,需要的小伙伴可以參考一下
    2022-02-02
  • Python爬蟲(chóng)之對(duì)CSDN榜單進(jìn)行分析

    Python爬蟲(chóng)之對(duì)CSDN榜單進(jìn)行分析

    這篇文章主要介紹了Python爬蟲(chóng)之對(duì)CSDN榜單進(jìn)行分析,文章有詳細(xì)代碼,簡(jiǎn)單易懂,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2023-01-01
  • 使用Python生成XML的方法實(shí)例

    使用Python生成XML的方法實(shí)例

    這篇文章主要介紹了使用Python生成XML的方法,結(jié)合具體實(shí)例形式詳細(xì)分析了Python生成xml文件的具體流暢與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-03-03

最新評(píng)論