在sql查询中用python变量替换String

时间:2017-12-10 22:49:34

标签: python mysql sql

所以我知道以前曾经问过类似的问题,但是发布的解决方案对我来说似乎不起作用,除非我做错了。

我想更改此内容:query1= ("SELECT anthologyID, title FROM newschema.item WHERE title LIKE 'asperges'" ) 输出为51962, Asperges

这样的事情:

asperges= "asperges" cursor.execute(query1,asperges) query1= ("SELECT anthologyID, title FROM newschema.item WHERE title LIKE '%s'")

问题:输出都是错误的(我在光标上的for循环中打印仅供参考),而不是只获得一个匹配,我得到该表中所有标题的匹配。

怎么了?

(因为有人可能会告诉我这样做: query1= ("SELECT anthologyID, title FROM newschema.item WHERE title LIKE '%s'" , asperges)

该查询给了我AttributeError: 'tuple' object has no attribute 'encode'

谢谢!

1 个答案:

答案 0 :(得分:2)

对于cursor.execute,你可以给出两个参数:首先是要替换值的字符串("%s"),第二个是元组,所以要么你可以把它扔到光标上(最好的选择!):

cursor.execute("SELECT anthologyID, title FROM newschema.item WHERE title LIKE %s",('aspergers',))

不要忘记' aspergers'!之后的逗号。它会将您的数据转换为元组。

或者您可以设置查询并将其提供给光标:

query1= "SELECT anthologyID, title FROM newschema.item WHERE title LIKE %s"  % (asperges,)
cursor.execute(query1)

再次检查COMMA。