我尝试使用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/