现状:
我有一个带有表的工作数据库,可以查询、插入、更新等。游标也连接到正确的数据库。
桌子:
问题:
在从表中查询数据时,我遇到了麻烦:
query = 'SELECT Last_Request_Time FROM Products WHERE idProduct = %s'
idProduct = '106'
cursor.execute(query, (idProduct))
在调试时我看了一下 cursor.execute() 函数:params = str: 106
将被传递给:
stmt = operation % self._process_params(params)
在哪里
res = params
# pylint: disable=W0141
res = map(self._connection.converter.to_mysql, res)
用 调用res = str: 106
。我不确定转换器在做什么,但结果是res = list: ['1', '0', '6']
。这些参数将被传递给执行函数,该函数将遇到以下错误:
File "C:\Python27\lib\site-packages\mysql\connector\cursor.py", line 480, in execute
"Wrong number of arguments during string formatting")
mysql.connector.errors.ProgrammingError: Wrong number of arguments during string formatting
不好的解决方法:
我有一个肮脏的解决方法,但我对此并不满意。在某些情况下它可能不起作用:
query = 'SELECT Last_Request_Time FROM Products WHERE idProduct = %s AND Edition != %s'
idProduct = '106'
cursor.execute(query, (idProduct, 'A'))