我有一个包含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;
);
答案 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,))
更加明确和可读。