我有包含 id 和字符串变量的整数列表。如何在 SQL 语句中使用这些变量?如果我使用这个:
list_of_ids = [1,2,3]
s_date = '2015-01-01'
cursor.execute("""
SELECT * FROM foo WHERE id IN (%s)
AND start_date=%s
""", (list_of_ids,s_date))
list_of_ids 将包含在不应该的引号中。
这个问题与这个imploding a list for use in a python MySQLDB IN clause有关但只有 IN 语句部分。
我正在使用 psycopg2 连接——以防万一。
最佳答案
构建parameters
作为序列(以下示例中的列表)。您需要相应地调整 sql 部分。
in_part = ','.join('%s' for _ in list_of_ids)
sql = "SELECT * FROM foo WHERE id IN (%s) AND start_date=%%s" % (in_part,)
params = list_of_ids + [s_date] # [1, 2, 3, '2015-01-01']
cursor.execute(sql, params)
关于python - Python SQL 语句中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34170387/