【问题标题】:psycopg2 "NULL" value from csv for sql insert来自csv的psycopg2“NULL”值用于sql插入
【发布时间】:2014-06-29 20:30:46
【问题描述】:

我正在尝试使用 psycopg2 从 csv 文件上传一些数据。我知道 COPY 和 copy_from 命令,但在我的情况下,我需要使用 insert 语句,无论如何。 我的问题是 csv 中具有整数值的列可以包含“NULL”。当游标尝试执行插入 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()

【问题讨论】:

    标签: python csv psycopg2


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-18
      • 1970-01-01
      • 2014-04-25
      • 2016-06-15
      • 2017-04-18
      • 1970-01-01
      • 2018-04-13
      • 1970-01-01
      相关资源
      最近更新 更多