Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySql cursors.execute () chỉ với một tham số:Tại sao một chuỗi được cắt thành một danh sách?

Vấn đề là ('hello') là một chuỗi và ('hello',) là một tuple . Bạn cần phải luôn chuyển một tuple (hoặc tập hợp khác như vậy, chẳng hạn như danh sách) làm giá trị cho trình giữ chỗ của bạn. Lý do là trình giữ chỗ của bạn là vị trí trong truy vấn của bạn, vì vậy các đối số cũng phải có một số thứ tự - và bộ giá trị và danh sách là hai cách để có được lựa chọn có thứ tự các đối tượng.

Vì nó mong đợi một bộ tuple hoặc bộ sưu tập khác, 106 được chuyển đổi thành [1, 0, 6] . Nếu bạn nhập (106,) , nó sẽ được diễn giải một cách chính xác.

Phía sau hậu trường, đây là những gì đang diễn ra:

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

Vì vậy, 'hack' của bạn thực sự là giải pháp chính xác, bạn không cần thêm biến:

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 và NoSQL:Giúp tôi chọn đúng

  2. mysql group_concat với số lượng bên trong?

  3. Cách MySQL hoạt động không phân biệt chữ hoa chữ thường và không phân biệt dấu trong UTF-8

  4. Đang cố gắng thực hiện thao tác MINUS trong MySQL

  5. Cách lưu trữ dữ liệu với số lượng thuộc tính động trong cơ sở dữ liệu