2016-02-10 108 views
1

這似乎是一個相當流行的問題,但所有在這裏的答案並沒有幫助我解決問題......我的OS X機器上有一個Postgresql 9.5表:COPY在Postgresql中使用psycopg2的NULL值copy_from()

CREATE TABLE test (col1 TEXT, col2 INT) 

下面的函數使用psycopg2 copy_from()命令:

def test_copy(conn, curs, data): 
    cpy = BytesIO() 
    for row in data: 
     cpy.write('\t'.join([str(x) for x in row]) + '\n') 
    print cpy 
    cpy.seek(0) 
    curs.copy_from(cpy, 'test') 

test_copy(connection, [('a', None), ('b', None)]) 

,並會導致這個錯誤:

ERROR: invalid input syntax for integer: "None" 
CONTEXT: COPY test, line 1, column col2: "None" 
STATEMENT: COPY test FROM stdin WITH DELIMITER AS ' ' NULL AS '\N' 

我也試過copy_from(cpy, 'test', null=''),curs.copy_from(cpy, 'test', null='NULL)。任何建議,非常感謝。

回答

1

OK,經過試驗&錯誤我找到了解決辦法:

copy_from(cpy, 'test', null='None')