首页 > 解决方案 > Python中带有悬空逗号的Where子句

问题描述

我正在学习W3school的 Python 教程。

mycursor = mydb.cursor()

sql = "SELECT * FROM customers WHERE address LIKE %s"
adr = ("Yellow Garden 2", )        // I don't understand this part!!!

mycursor.execute(sql, adr) 

myresult = mycursor.fetchall()

for x in myresult:
    print(x)

如果我运行上面的代码,我会得到以下结果。
在此处输入图像描述

但是,当我删除逗号后的空格时,会出现错误。
adr = ("Yellow Garden 2", )-->adr = ("Yellow Garden 2" )

1)我想知道为什么逗号后需要一个空格。

2) 为什么我也需要一个括号 ( ) ?(当我删除括号时,我也会收到错误消息。)喜欢adr = "Yellow Garden 2"

标签: pythonmysql

解决方案


adr = ("Yellow Garden 2", )

这定义adrtuple具有单个元素的 a。您可以通过以下方式进行验证:

type(adr)

应该:

<class 'tuple'>

当您删除逗号时,(它是逗号导致它,而不是空格),adr变成一个简单的字符串:

adr = ("Yellow garden 2")
type(adr)

应该:

<type 'str'>

MySQL API 期望 atuple作为参数传递,因此会出现错误。这(soemthing,)就是在 python 中定义单元素元组的方式。


推荐阅读