不能使用psycopg2在postgres中插入无值

时间:2014-01-20 17:27:02

标签: python postgresql psycopg2

我有一个包含100多列和行的数据库(postgresql)。表中的一些单元格是空的,我使用python进行脚本编写,因此没有值放在空单元格中,但是当我尝试插入表格时它会显示以下错误。

"  psycopg2.ProgrammingError: column "none" does not exist"

我使用psycopg2作为python-postgres界面............任何建议??

提前致谢......

这是我的代码: -

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

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

1 个答案:

答案 0 :(得分:4)

请勿使用%字符串插值,而是使用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,))

更加明确和可读。