我尝试使用两种不同的方式执行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)很容易。但我想知道为执行方法提供元组的正确方法。
答案 0 :(得分:1)
cur.execute
将序列作为其第二个参数;单个字符串将被视为一个字符的字符串序列。使用显式元组:
cur.execute(bankd, (placeholders,))