Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySql cursors.execute() dengan hanya satu parameter:Mengapa string diiris ke dalam daftar?

Masalahnya adalah ('hello') adalah string dan ('hello',) adalah tupel . Anda harus selalu memberikan Tuple (atau koleksi lain seperti itu, seperti daftar) sebagai nilai untuk placeholder Anda. Alasannya adalah bahwa placeholder Anda berposisi dalam kueri Anda, jadi argumen juga harus memiliki urutan tertentu - dan tupel serta daftar adalah dua cara untuk mendapatkan pilihan objek yang terurut.

Karena mengharapkan Tuple atau koleksi lainnya, 106 akan dikonversi ke [1, 0, 6] . Jika Anda memasukkan (106,) , itu akan ditafsirkan dengan benar.

Di balik layar, inilah yang terjadi:

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

Jadi, 'retas' Anda sebenarnya adalah solusi yang tepat, Anda hanya tidak memerlukan variabel tambahan:

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. Tampilkan setiap Nilai Bidang DISTINCT hanya sekali menggunakan loop

  2. INET_ATON() dan INET_NTOA() di PHP?

  3. Nilai numerik di luar jangkauan:1264 di mysql

  4. MySQL:Mengatur sql_mode secara permanen

  5. Perbedaan waktu SQL dalam satu tabel