python3提取mysql数据并转化成字典数组

第一种方法,不用高级属性,本身硬写一个函数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()

第二种方法,这种方法涉及到列表的嵌套函数,可是最好用的sql

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="",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()
相关文章
相关标签/搜索