我正在尝试使用psycopg2
将列添加到表中
下面是要添加到表中的列名列表。我可以手动操作,但当我试图用编程的方式操作时,我会得到一个错误。
for c in row1:
cur.execute("ALTER TABLE HHV2PUB ADD COLUMN %s text", (c,))
错误是:
cur.execute("ALTER TABLE HHV2PUB ADD COLUMN %s text", (c,))
psycopg2.ProgrammingError: syntax error at or near "'HOUSEID'"
LINE 1: ALTER TABLE HHV2PUB ADD COLUMN 'HOUSEID' text
我猜这和单引号有关
从Psycopg 2.7开始,有一个保险箱^{} module :
2.6及更早版本:
使用
psycopg2.extensions.AsIs
不能对SQL对象名使用SQL参数。SQL参数显式引用值,这样就不能将它们解释为这样;这是使用SQL参数或的主要原因之一。
这里必须使用字符串插值。要特别小心,不要使用用户输入在这里生成
c
:Psycopg2确实为您提供了一个用^{} 将参数标记为“已转义”的方法,但其目的是将此方法用于已转义的数据。
更好的方法是使用^{} extension 来管理正确的标识符转义:
相关问题 更多 >
编程相关推荐