最近在做使用Python操作PostgreSQL的项目,需要把取到的值转换为字典返回过去,由于刚刚接触Python和PostgreSQL,只好去百度寻找相关的方法,百度找到的方法如下,但是不能实现,如有大神,请求指点一二
import psycopg2
from psycopg2 import extras
db = psycopg2.connect(database=connObject.get("database"),
user=connObject.get("user"),
password=connObject.get("password"),
host=connObject.get("host"),
port=int(connObject.get("port")))
# 获得游标对象
cur = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)#RealDictCursor和DictCursor都试过了
# 执行语句
cursor.execute(sql)
# 获取数据.
results = cursor.fetchall()
#输出结果如下,并不能满足我的需要
#RealDictRow([('id', 1), ('name', 'Paul'), ('sex', '男'), ('password', '123456'), ('realname', 'California')])
终于在试验N种方法之后,找到了一个能完美符合需求的,方法如下
import psycopg2
db = psycopg2.connect(database=connObject.get("database"),
user=connObject.get("user"),
password=connObject.get("password"),
host=connObject.get("host"),
port=int(connObject.get("port")))
# 获得游标对象
cur = conn.cursor()
# 执行语句
cursor.execute(sql)
# 获取数据并转为字典格式
columns = [desc[0] for desc in cursor.description]
results = [dict(zip(columns, row)) for row in cursor.fetchall()]
#该方法取到的值是这样的
[{'id': 1, 'name': 'Paul', 'sex': '男', 'password': '123456', 'realname': 'California'}, {'id': 2, 'name': 'Allen', 'sex': '男', 'password': '123456', 'realname': 'Texas'}]
再次感谢这位不知名的大哥,参考链接为http://www.voidcn.com/article/p-rgyxljux-bvv.html