python - Python SQL 语句中的变量

标签 python sql postgresql psycopg2

我有包含 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/

相关文章:

python - 在 Tensorflow 2 中的每个纪元之后计算每个类的召回率

python - django-zappa : Error loading psycopg2 module: libpq. so.5:无法打开共享对象文件:没有这样的文件或目录

SQL DB 性能和短时间间隔内的重复查询

mysql - SQL 查询获取 SUM 生成的新列的前 10 名

sql - 数百个 excel 查找值到 MySQL 在线插入?

postgresql - 使用二进制COPY加载jsonb []列

python - 将月份从 str 更改为 int 进行计算

python - python摄氏到华氏转换语法错误

node.js - Sequelize 预加载错误

SQL为每个类别获取1条随机记录