AttributeError:“ tuple”对象没有属性“ encode”-MySQLdb Python


问题内容

我正在用MySQL编写Python代码。

我的数据库架构如下:

-------------
| id | name |
-------------
|    |      |
|    |      |

以下是我的代码的一部分:

cursor = self.conn.cursor()
query = ("SELECT name FROM TABLENAME WHERE id = '%s'", (str(id.decode('unicode_escape').encode('ascii', 'utf-8'),)))
cursor.execute(query)

我正在通过URL传递ID。

并得到以下错误:

AttributeError:“元组”对象没有属性“ encode”

在查询中对ID的值进行硬编码时,会得到结果。但是由于某些原因,当我传递参数时它不起作用。


问题答案:

查询参数应作为第二个参数传递给execute()

cursor = self.conn.cursor() 
query = "SELECT name FROM TABLENAME WHERE id = %s"
cursor.execute(query, (str(id.decode('unicode_escape').encode('ascii', 'utf-8')), ))

请注意,您不需要在%s占位符周围使用单引号-数据库驱动程序会根据需要根据查询参数类型自动将其放在引号中。