Python + psycopg:输入' 23'对于列实际上是双精度'在postgresql数据库中

时间:2013-11-25 22:50:20

标签: python postgresql psycopg2

我在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 ='双精度'或类似的东西?

1 个答案:

答案 0 :(得分:0)

最后,不需要创建PGData2PY功能。一个简单的

for row in rows:
    rec={}
    for k in range(len(row)):
        print k
        rec[columns[k]]=row[k]
    rtn.append(rec)

作品。