如何使用 python 将 IN 或 NOT IN 子句作为变量传递给 postgresql 查询
How to pass IN or NOT IN clause as variable to postgresql query using python
如何将 IN
OR NOT IN
子句作为变量传递给查询?
当我在下面的查询中传递变量时,我得到:
SELECT * FROM table_name WHERE column_name 'IN' ('product', 'category')
如果存在引号会触发错误 'IN'
query_clause = 'IN'
##query_clause could equal 'NOT IN'
cur = my_connection.cursor()
cur.execute("SELECT * FROM table_name WHERE column_name %s ('product', 'category')", (query_clause,))
你不能为此使用 sql 格式字符串...只是一个普通的格式字符串
cur.execute("SELECT * FROM table_name WHERE column_name %s ('product', 'category')"%(query_clause,))
值得注意的是,这假设 query_clause
是受信任的输入...(如果这不是受信任的输入,它不会针对注入进行清理)
是的,这是预期的。请改用布尔参数:
SELECT * FROM table_name
WHERE (column_name IN ('product', 'category')) = %s
然后您可以将 true 或 false 传递给参数。
如何将 IN
OR NOT IN
子句作为变量传递给查询?
当我在下面的查询中传递变量时,我得到:
SELECT * FROM table_name WHERE column_name 'IN' ('product', 'category')
如果存在引号会触发错误 'IN'
query_clause = 'IN'
##query_clause could equal 'NOT IN'
cur = my_connection.cursor()
cur.execute("SELECT * FROM table_name WHERE column_name %s ('product', 'category')", (query_clause,))
你不能为此使用 sql 格式字符串...只是一个普通的格式字符串
cur.execute("SELECT * FROM table_name WHERE column_name %s ('product', 'category')"%(query_clause,))
值得注意的是,这假设 query_clause
是受信任的输入...(如果这不是受信任的输入,它不会针对注入进行清理)
是的,这是预期的。请改用布尔参数:
SELECT * FROM table_name
WHERE (column_name IN ('product', 'category')) = %s
然后您可以将 true 或 false 传递给参数。