MySql cursors.execute () con un solo parámetro: ¿Por qué una cadena se divide en una lista?

Status quo:

Tengo una base de datos que funciona con tablas y puedo consultar, insertar, actualizar, etc. Además, el cursor está conectado a la base de datos correcta.

La mesa:

Problema:

Cuando se trata de consultar datos de una tabla, me encuentro con problemas:

query     = 'SELECT Last_Request_Time FROM Products WHERE idProduct = %s'
idProduct = '106'
cursor.execute(query, (idProduct))

Durante la depuración, miro la función cursor.execute ():params = str: 106 pasará a:

stmt = operation % self._process_params(params)

dónde

res = params
# pylint: disable=W0141
res = map(self._connection.converter.to_mysql, res)

se llama conres = str: 106. No estoy seguro de lo que está haciendo el convertidor, pero como resultadores = list: ['1', '0', '6']. Y estos argumentos se pasarán a la función de ejecución que se ejecutará en el siguiente error:

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
Mala solución:

Tengo una solución sucia, pero no estoy contento con eso. Puede que no funcione en algunos casos:

query     = 'SELECT Last_Request_Time FROM Products WHERE idProduct = %s AND Edition != %s'
idProduct = '106'
cursor.execute(query, (idProduct, 'A'))

Respuestas a la pregunta(1)

Su respuesta a la pregunta