python3提取mysql數據並轉化成字典數組


第一種方法,不用高級屬性,自己硬寫一個函數

import pymysql
db=pymysql.connect(host="",user="",passwd="",db="",post=3306,charset="utf8");
str="select * from db1 where usrID="";";
cursor=db.cursor()
try:
    cursor.excute(str)
    index=cursor.description       #列描述
    result=[]
    db.commit()
    for res in cursor.fetchall():  #返回的全部結果
        row={}
        for i in range(len(index)-1):
            row[index[i][0]]=res[i]

        result.append(row)   #result是最后要的dict數組
except:
    db.rollback()
cursor.close()
db.close()

第二種方法,這種方法涉及到列表的嵌套函數,但是最好用的

import pymysql
db=pymysql.connect(host="127.0.0.1", user="root", password="",
                 database="data", port=3306, charset='utf8',)
str="select * from  userinfo ;"
#str="select * from  userinfo where certificate_no='20200317001' ;"
cursor=db.cursor()
try:
    cursor.execute(str)
    desc = cursor.description  # 獲取字段的描述
    data_dict = [dict(zip([col[0] for col in desc], row)) for row in cursor.fetchall()]  # row是數據庫返回的一條一條記錄,外側的這個for是大循環,里邊的for提取了數據列描述,
#和一條數據合成一個字典,外側循環將多條記錄循環成字典數組
print(data_dict) except: db.rollback() cursor.close() db.close()

 第二種方法更好理解的寫法

import pymysql
db=pymysql.connect(host="127.0.0.1", user="root", password="",
                 database="data", port=3306, charset='utf8',)
str="select * from  userinfo ;"
#str="select * from  userinfo where certificate_no='20200317001' ;"
cursor=db.cursor()
try:
    cursor.execute(str)
    result=cursor.fetchall()#所有結果
    column=[index[0] for index in cursor.description  ]# 列名
    data_dict = [dict(zip(column, row)) for row in result]  # row是數據庫返回的一條一條記錄,其中的每一天和column寫成字典,最后就是字典數組

    print(data_dict)
except:
    db.rollback()

cursor.close()
db.close()

 

 

第三種方法用迭代函數,這個既不如第一個,也不如第二個,有點不倫不類了

import pymysql
db=pymysql.connect(host="",user="",passwd="",db="",post=3306,charset="utf8");
str="select * from db1 where usrID="";";
cursor=db.cursor()

def new2dict(new):  #迭代函數
    return dict(zip([x[0] for x in cursor.description],[x for x in new]))  #zip函數
try:
    cursor.excute(str)
    news_list=list(map(new2dict,cursor.fetchall())) #news_list是轉換后的dict數組  這里有map函數
except:
    db.rollback()
cursor.close()
db.close()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM