我尝试使用2种不同的方式执行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)很容易。但是我想知道提供元组以执行方法的正确方法。

最佳答案

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

cur.execute(bankd, (placeholders,))

关于python - 光标未返回正确的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45872249/

10-10 09:42