Mysql
 sql >> база данни >  >> RDS >> Mysql

MySql cursors.execute() само с един параметър:Защо низът е нарязан в списък?

Проблемът е, че ('hello') е низ и ('hello',) е кортежка . Винаги трябва да предавате кортеж (или друга подобна колекция, като списък) като стойности за вашите заместители. Причината е, че вашите заместители са позиционни във вашата заявка, така че аргументите също трябва да имат някакъв ред - а кортежите и списъците са два начина да получите подредена селекция от обекти.

Тъй като очаква кортеж или друга колекция, 106 се преобразува в [1, 0, 6] . Ако подадете (106,) , ще бъде интерпретирано правилно.

Зад кулисите се случва това:

>>> for i in '106':
...     print(i)
...
1
0
6
>>> for i in ('106',):
...    print(i)
...
106

Така че вашият "хак" всъщност е правилното решение, просто нямате нужда от допълнителната променлива:

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да извършите групирано класиране в MySQL

  2. Осигуряване на отдалечена mysql връзка

  3. Актуализирайте версията на MySQL от 5.1 на 5.5 в CentOS 6.2

  4. Изтегляне на MySQL dump от командния ред

  5. Как да генерирам динамично HTML страница с помощта на PHP?