问题是这
('hello')是一个字符串,并且('hello',)是一个 元组。您需要始终传递一个元组(或其他类似的集合,如列表)作为占位符的值。原因是占位符在查询中是 定位的 ,因此参数也应具有一定的顺序-
元组和列表是获得对象的有序选择的两种方法。
由于期望使用元组或其他集合,因此
106将其转换为
[1, 0, 6]。如果您通过
(106,),它将被正确解释。
在幕后,这是怎么回事:
>>> for i in '106':... print(i)...106>>> for i in ('106',):... print(i)...106因此,您的“ hack”实际上是正确的解决方案,只是不需要额外的变量:
q = 'SELECt Last_Request_Time FROM Products WHERe idProduct = %s'cursor.execute(q, (idProduct,))



