光标不会返回正确的结果

时间:2017-08-24 23:17:01

标签: python python-3.x

我尝试使用两种不同的方式执行mysql查询,如下所示:

选项1:

bankd1= ("SELECT * FROM  Bank_loan  WHERE id in  (%s)" % placeholders)
cur.execute(bankd1)

选项2:

bankd= "SELECT * FROM  Bank_loan WHERE id in  (%s)"
cur.execute(bankd, placeholders)

选项1始终可以正常工作。但是在选项2的情况下,即使数据库中存在记录,有时也无法显示结果(如选项1所确认)

在python中是否有任何关于字符串替换的缺失或者游标如何处理参数?

更新:

在以下情况中,选项1有效,因为ID 81220有一个条目

选项1:

placeholders = '81220, 63266'

选项2:

placeholders = '63266, 81220'

选项2不起作用,因为63266没有条目.Mysql仅检查字符串中的第一项。

如何提供元组而不是字符串?

使用第一个有效的选项(bankd1)很容易。但我想知道为执行方法提供元组的正确方法。

1 个答案:

答案 0 :(得分:1)

cur.execute将序列作为其第二个参数;单个字符串将被视为一个字符的字符串序列。使用显式元组:

cur.execute(bankd, (placeholders,))