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

Apa strategi karakter pelarian terbaik untuk kombo Python/MySQL?

Ini contohnya:

import MySQLdb
column = str(MySQLdb.escape_string(row[1]))
query = "update myTable set %(column)s = %%s where ID = %%s" % dict(column = column) 
cursor2.execute(query, [row[3], row[0]])

Perbarui

Berikut adalah komentar singkatnya:

column = str(MySQLdb.escape_string(row[1]))

Selalu merupakan ide bagus untuk menghindari apa pun yang masuk ke kueri. Dalam hal ini kami menambahkan nama kolom secara dinamis dan karenanya harus di-escape sebelum kueri dieksekusi.

query = "update myTable set %(column)s = %%s where ID = %%s" % dict(column = column) 

Saya membentuk kueri di sini. Saya mencoba mencapai dua hal:(1) membentuk kueri dengan nama kolom yang diisi menggunakan column variabel yang dideklarasikan pada baris sebelumnya (2) tambahkan placeholder yang akan diisi oleh parameter aktual selama eksekusi kueri.

Cuplikan dict(column = column) sebenarnya adalah cara lain untuk membuat kamus {'column': column} . Ini dimungkinkan menggunakan dict konstruktor. Saya belum ingin mengisi tempat penampung lain, jadi saya menghindarinya menggunakan dua tanda persentase (%% ).

cursor2.execute(query, [row[3], row[0]])

Akhirnya jalankan kueri. Jika Anda mencetak kueri sebelum mengeksekusi, Anda akan melihat string update myTable set column_name = %s where ID = %s .



  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 - Nilai 1 dalam DECIMAL (2, 2) keluar sebagai 0,99

  2. bagaimana cara menggunakan mysql_data_seek dengan PDO?

  3. ckfinder php 2.6.2 pengaturan tampilan, tampilan, penyortiran tidak berfungsi

  4. MySQL COUNT BERBEDA

  5. Tidak dapat mengubah kolom yang digunakan dalam batasan kunci asing