【发布时间】:2021-11-02 15:38:06
【问题描述】:
我正在尝试运行表单的查询:
SELECT {} from TABLE where foo = VALUE
但我希望能够提供一个列表来替换 {}
根据 psycopg 文档,为了安全地执行此操作,您需要使用 sql.Identifier 函数,以便正确转义参数,然后执行以下操作:
SQL = sql.SQL(
"SELECT {} FROM foo WHERE bar = %s"
).format(identifier)
cursor.execute(SQL, [VALUE])
当identifier 是单个元素时,这有效,但我需要它是任意数字。例如,如果:
identifier = ["abc", "def"]
和
VALUE = 4
SQL = SELECT abc def FROM foo WHERE bar = 4
我已经尝试为identifier 的每个成员运行sql.Identifier(x),但这给出了"abc""def",这显然是不正确的。
【问题讨论】:
-
为什么这被标记为 Django?你不能用 Django-ORM 做到这一点吗?
-
@Saturnix 因为是 django 的游标对象,但也没什么大不了的。很遗憾,我不能在这里使用 ORM。
标签: python python-3.x django psycopg2