psycopg2" NULL"来自csv的sql插入值

时间:2014-06-29 20:30:47

标签: python csv psycopg2

我正在尝试使用psycopg2从csv文件上传一些数据。我知道COPY和copy_from命令,但在我的情况下,我需要使用insert语句,无论如何。 我的问题是带有整数值的csv中的列可以包含“NULL”。当游标尝试执行insert postgres返回错误:整数的输入语法无效:“NULL” psycopg2文档说你应该使用None来将Null传递给数据库,但在我的情况下看起来我必须检查所有字段值是否等于“NULL”,如果是,则传递None。它看起来不像是正确的方式。有没有办法将“NULL”作为None读取或将“NULL”传递给psycopg2而不进行任何检查。

with open('/my.csv', 'rb') as csvfile:
    reader = csv.reader(csvfile)
    for row in reader:
        pg_cursor.execute(
            """ insert into "MyTable"("IntField")
                values(%s)""", row
        )
    conn.commit()

1 个答案:

答案 0 :(得分:2)

您可以使用列表推导将'NULL'替换为None

row = [None if cell == 'NULL' else cell for cell in row]
pg_cursor.execute(
    """ insert into "MyTable"("IntField")
        values(%s)""", row
)