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)))