问题
I am writing a Python code with MySQL.
My DB schema is as follows:
-------------
| id | name |
-------------
| | |
| | |
Following is a part of my code:
cursor = self.conn.cursor()
query = ("SELECT name FROM TABLENAME WHERE id = '%s'", (str(id.decode('unicode_escape').encode('ascii', 'utf-8'),)))
cursor.execute(query)
I am passing the ID from the URL.
And getting the following error:
AttributeError: 'tuple' object has no attribute 'encode'
I get the results when I hard-code the valud of ID in the query. But for some reason it is not working when I pass in a parameter.
回答1:
The query parameters should be passed as a second parameter to 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')), ))
Note that you don't need the single quotes around the %s
placeholder - the database driver would put them automatically if needed depending on the query parameter type.
来源:https://stackoverflow.com/questions/35352283/attributeerror-tuple-object-has-no-attribute-encode-mysqldb-python