所以我知道以前曾经问过类似的问题,但是发布的解决方案对我来说似乎不起作用,除非我做错了。
我想更改此内容: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'
谢谢!
答案 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。