Untuk menghindari injeksi, gunakan execute
dengan %s
sebagai ganti setiap variabel, lalu berikan nilai melalui daftar atau tuple sebagai parameter kedua execute
. Berikut adalah contoh dari dokumentasi
:
c=db.cursor()
max_price=5
c.execute("""SELECT spam, eggs, sausage FROM breakfast
WHERE price < %s""", (max_price,))
Perhatikan bahwa ini menggunakan koma , bukan % (yang akan menjadi substitusi string langsung, tidak lolos). Jangan lakukan ini :
c.execute("""SELECT spam, eggs, sausage FROM breakfast
WHERE price < %s""" % (max_price,))
Selain itu, Anda tidak boleh menggunakan tanda kutip tunggal di sekitar pemegang posisi ('%s'
) jika parameternya adalah string seperti yang disediakan oleh driver.