2013-11-25 28 views
0

我在Python中使用psycopg2來訪問postgresql數據庫。Python + psycopg:在postgresql數據庫中實際上'雙精度'時輸入'23'

予先收集行與使用fetchall:

rows=cur.fetchall() 

然後,對於每一行,我修改從PostgreSQL的格式類型蟒格式:

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 

我剛收到類型噸= 23,實際上它應該是我的postgresql數據庫中的「雙精度」列。特定的值在這裏對應於數據庫中的整數。

它怎麼會打印t = 23而不是t ='雙精度'或類似的東西?

+1

我不明白你在做什麼:psycopg2將PostgreSQL的類型轉換爲Python。無需做你自己的轉換。 – fog

+0

直到最近我還在使用pgdb,它在我看來我必須自己做... – Antonin

+0

psycopg2中的等效代碼是什麼? – Antonin

回答

0

最後,不需要創建PGData2PY函數。一個簡單的

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

的作品。

相關問題