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

Melarikan diri dari kutipan untuk MySQL dengan python

Jangan jangan gunakan pemformatan string untuk menginterpolasi nilai SQL. Gunakan parameter SQL:

SQL = 'INSERT INTO test_table (col1, col2, col3, col4) VALUES (%s, %s, %s, %s)'
cursor.execute(SQL, (var1, var2, var3, var4))

Berikut %s adalah parameter SQL; database kemudian menangani pelepasan nilai (diteruskan sebagai argumen ke-2 ke `cursor.execute) untuk Anda.

Sintaks apa yang perlu Anda gunakan bergantung pada adaptor database Anda; beberapa menggunakan %s , yang lain menggunakan ? untuk placeholder.

Anda tidak dapat menggunakan wadah Python, seperti daftar, untuk parameter ini. Anda harus membuat serial itu ke format string terlebih dahulu; Anda bisa menggunakan JSON untuk itu, tetapi Anda juga harus ingat untuk mendekode JSON menjadi string Python lagi saat Anda menanyakan database. Itulah yang coba disampaikan oleh jawaban atas pertanyaan lain.

Misalnya, jika var4 adalah daftarnya, Anda dapat menggunakan:

cursor.execute(SQL, (var1, var2, var3, json.dumps(var4)))


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Akses ditolak kesalahan saat menggunakan mysql_real_escape_string()

  2. Cara memeriksa variabel yang ada di database wordpress menggunakan $wpdb

  3. PHP PDO SQL hanya mengembalikan satu baris data, bukan semua baris

  4. Kesalahan:Instalasi PHP Anda tampaknya kehilangan ekstensi MySQL yang diperlukan oleh WordPress

  5. Apakah kunci utama numerik dari catatan yang dihapus dalam database dapat digunakan kembali untuk catatan baru di masa mendatang?