2014-01-20 19 views
1

我有一個包含超過100列和行的數據庫(postgresql)。表中的一些單元格是空的,我使用python進行腳本編寫,因此None值放置在空單元格中,但是當我試圖插入表格時,它顯示以下錯誤。無法在postgres中使用psycopg2插入無值

使用psycopg2作爲蟒-postgres的接口............任何建議
" psycopg2.ProgrammingError: column "none" does not exist" 

上午??

在此先感謝......

這裏是我的代碼: -

list1=[None if str(x)=='nan' else x for x in list1]; 

cursor.execute("""INSERT INTO table VALUES %s""" %list1; 
); 
+0

Python不會*需要使用';'分號。 –

+0

'list1'只保存**一個**值嗎?或者你是否嘗試將其用於多次插入? –

回答

3

不要使用%串插,使用SQL parameters來代替。數據庫適配器可以處理None就好了,它只是需要翻譯成NULL,但只有當你使用SQL參數將這種情況發生:

list1 = [(None,) if str(x)=='nan' else (x,) for x in list1] 

cursor.executemany("""INSERT INTO table VALUES %s""", list1) 

我假設你正試圖在這裏插入多行。爲此,您應該使用cursor.executemany() method並傳入要插入的行列表;每行都是一個元組,這裏有一列。

如果list1只是一個值,然後使用:

param = list1[0] 
if str(param) == 'nan': 
    param = None 

cursor.execute("""INSERT INTO table VALUES %s""", (param,)) 

這一點更加明確和可讀性。