我在python中使用psycopg2来访问postgresql数据库。
我首先使用fetchall收集行:
rows=cur.fetchall()
然后,对于每一行,我将类型从postgresql格式修改为python格式:
for row in rows:
rec={}
for k in range(len(row)):
print k
rec[columns[k]]=PGData2PY(row[k],str(types[k]))
rtn.append(rec)
def PGData2PY(d,t):
"""
translate pgdb data to python data
params: d: data; t: data description
return python data
"""
if t == 'text':
return str(d)
elif...
else:
print t
return d
我刚收到一个类型t = 23,实际上它应该是我的postgresql数据库中的“双精度”列。此处的特定值对应于数据库中的整数。
为什么打印t = 23而不是t ='双精度'或类似的东西?
答案 0 :(得分:0)
最后,不需要创建PGData2PY功能。一个简单的
for row in rows:
rec={}
for k in range(len(row)):
print k
rec[columns[k]]=row[k]
rtn.append(rec)
作品。