我正在用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:'tuple'对象没有属性'encode'
当我在查询中硬编码ID的值时,我得到了结果。但由于某些原因,当我传入参数时,它无法正常工作。
答案 0 :(得分:1)
查询参数应作为第二个参数传递给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
占位符周围不需要单引号 - 数据库驱动程序会根据查询参数类型自动添加它们。