AttributeError: 'tuple' object has no attribute 'encode' - MySQLdb Python

自作多情 提交于 2019-12-19 09:19:12

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!