Anda perlu menggunakan parameter SQL untuk setiap nilai.
Untuk in
pernyataan, itu berarti Anda perlu membuat parameter:
sql = 'select * from tbl where params1=:params1 and params2=:params2 and params3 in ({})'.format(
', '.join(['params3_' + str(i) for i in range(len(params3_value))])
di mana saya berasumsi bahwa params3_value
adalah daftar nilai untuk menguji params3
melawan. Jika params3_value
adalah 3 elemen (seperti ['v1', 'v2', 'v3']
) maka SQL yang dihasilkan akan terlihat seperti:
select * from tbl where params1=:params1 and params2=:params2 and params3 in (:params3_0, :params3_1, :params3_2)
Kemudian berikan parameter tersebut ke cursor.execute()
hubungi:
params = {'params1': params1_value, 'params2': params2_value}
for i, val in enumerate(params3_value):
params['params3_' + str(i)] = value
cursor.execute(sql, {params})
Saya menggunakan :name
bernama gaya parameter SQL di sini karena itulah cx_Oracle
menggunakan. Lihat dokumentasi konektor database Anda untuk mengetahui gaya parameter yang didukung secara tepat.
:named
bernama gaya parameter SQL mengharuskan Anda memasukkan parameter sebagai kamus, sehingga kode di atas menghasilkan kunci yang tepat untuk params3_value
item.