这似乎是一个相当受欢迎的问题,但这里的所有答案都没有帮助我解决问题…我的OS X机器上有一个
Postgresql 9.5表:
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'
我也试过curs.copy_from(cpy,’test’,null =”),curs.copy_from(cpy,null =’NULL’).任何建议都非常感谢.
解决方法
好的,经过更多的试用和错误我找到了解决方案:
copy_from(cpy,'test',null='None')