我正在尝试使用带有psychopg2的Python脚本将Excel电子表格插入到Postgres数据库中。
问题不是所有的电子表格都有相同的列数,而且我需要insert语句足够灵活,所以我不必按名称指定它们。
我的方法是将电子表格标题行的列加载到元组中,同样插入值。例如:
sql = ''''INSERT INTO my_table (%s) VALUES (%s);'''
cur.execute(sql, (cols, vals))
其中'cols'和'vals'都是元组。
'cols'可以包含7,9,10等条目,这也取决于电子表格的列数。
当我尝试运行时,我得到:
psycopg2.ProgrammingError: syntax error at or near "'INSERT INTO my_table
(ARRAY['"
LINE 1: 'INSERT INTO my_table...
^
不确定问题是否在我的调用语法中,或者你根本无法做我想做的事。
答案 0 :(得分:0)
在SQL查询的开头有一个撇号'
。
''''INSERT INTO my_table (%s) VALUES (%s);'''
应该是
'''INSERT INTO my_table (%s) VALUES (%s);'''
编辑:没有意识到您在哪里尝试动态查询列。为此,您应该使用文本格式。假设cols
是一个列表:
sql = '''INSERT INTO my_table ({}) VALUES (%s)'''.format(','.join(cols))
然后,您的执行将是:
cur.execute(sql, (vals,))