gpt4 book ai didi

Python 准备语句。 SELECT IN 的问题

转载 作者:可可西里 更新时间:2023-11-01 07:21:10 25 4
gpt4 key购买 nike

我在 Python 中遇到一个准备好的语句的问题,我目前无法解决。

应该执行的查询是例如:

 SELECT md5 FROM software WHERE software_id IN (1, 2, 4)

所以我尝试执行这样的查询:

software_id_string = "(2, 3, 4)"
cursor.execute("SELECT md5 FROM software WHERE software_id IN %s",
software_id_string)

问题是字符串中添加了 '' --> '(2, 3, 4)',因此查询将是:

SELECT md5 FROM software WHERE software_id IN ''(2, 3, 4)''

我也试过像这样重建脚本:

software_id_string = " 1 OR software_id = 2"
cursor.execute("SELECT md5 FROm software WHERE software_id = %s",
software_id_string)

这仅适用于将提交的第一个 id(在本例中为 1),因为 OR 部分不会被插入为 SQL 语句...

是否有可能解决准备好的语句的问题?

最佳答案

参数列表中的每一项都需要一个占位符。
您可以使用字符串操作来完成该部分:

  1. 为每个参数创建一个%s,并且
  2. 用逗号将它们连接起来。

在下一步中,您可以按照 DB-API documentation 中的建议将两个参数传递给 execute() .

software_id_string = (1,2,4)
qry = '''SELECT md5
FROM software
WHERE software_id IN (%s)''' % ','.join(['%s']*len(software_id_string))
# // 'SELECT md5 FROM software WHERE software_id IN (%s,%s,%s)'
cursor.execute(qry, software_id_string)

关于Python 准备语句。 SELECT IN 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6216503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com