【发布时间】:2018-10-21 18:54:31
【问题描述】:
我有以下在 PostgreSQL 数据库上执行查询的函数:
def execute_query(query):
con, cur = connect_to_db()
cur.execute(query)
con.commit()
con.close()
当我尝试提交包含 %s 的查询时,%s 被视为附加参数,这会产生以下错误:
TypeError: execute_query() 接受 1 个位置参数,但给出了 2 个
如何在不产生此错误的情况下包含 %s?示例:
execute_query( """ DELETE FROM table WHERE column = %s """, [x[0]])
【问题讨论】:
-
xkcd.com/327 - 不要使用字符串创建查询字符串 - 使用参数
-
见parameterized-queries-with-psycopg2-python-db-api-and-postgresql - 你可以同时提供你的功能:
def execute_query(query, *args): ... -
你应该了解 args 和 kwargs。
标签: python postgresql function psycopg2