在python3中,操作pymysql或者psycopg2等SQL数据库进行数据查询时,它这个库里面好像并没有像python2一样在底层自动帮我们循环转换好以字典键值对的格式给我们返回数据(可能是我没找到),而是在列表里面以元组类型直接把值返回过来,这样就导致我们在取值的时候只能通过下标去取,很容易出错,非常的不方便。针对于此,我简单封装了一个方法,以psycopg2为例,在执行查询语句时,将结果转换成字典类型返回。demo如下:
import psycopg2def get_data(database_info,sql):conn = t(database=database_info["database"], user=database_info["user"],password=database_info["password"],host=database_info["host"], port=database_info["port"])cur = conn.cursor()ute(sql)#获取表的所有字段名称coloumns = [row[0] for row in cur.description]result = [[str(item) for item in row] for row in cur.fetchall()]return [dict(zip(coloumns, row)) for row in result]except Exception as ex:print(ex)finally:conn.close()
#数据库连接信息
database_info={"database":"test_base_inf","user":"data_inf_root","password":"BASE_root~589","host":"192.168.12.101","port":"2345"
}
sql="select * from nric_affiliation"
data=get_data(database_info,sql)
for item in data:print(item)
运行返回格式如图:
这样就变成了以字段键值对的格式了
#-------------------------------评论朋友反馈的新方法,确实可以用--------------------------------
def get_data(sql):conn = t(database=GP_DATABASE, user=GP_USERNAME,password=GP_PASSWORD, host=GP_HOST,port=GP_PORT)cur = conn.cursor(cursor_factoryas.RealDictCursor)ute(sql)return cur.fetchall()except Exception as ex:print(ex)finally:conn.close()data=get_data("select * from tb_flight where is_complete='false'")
print(data)
本文发布于:2024-01-29 18:49:12,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170652535617521.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |