2017-08-24 126 views
1

我试图执行使用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' 

Op重复2不起作用,因为没有63266的条目。Mysql只检查字符串中的第一项。

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

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

回答

1

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

cur.execute(bankd, (placeholders,)) 
+0

仍然是同样的问题。更改为元组没有任何区别。行为不一致。它正在为某些ID工作。 – shantanuo