Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Selamat Parameter Pernyataan SELECT SQL dalam Python dengan pyodbc?

Bagaimana untuk Selamat Parameter Pernyataan SELECT SQL dalam Python dengan pyodbc?

DDD
Lepaskan: 2025-01-03 12:58:38
asal
668 orang telah melayarinya

How to Safely Parameterize SQL SELECT Statements in Python with pyodbc?

Pernyataan Pilih Berparameter dalam Python Menggunakan pyodbc

Soalan ini membincangkan cara untuk melaksanakan pernyataan SQL SELECT menggunakan pembolehubah sebagai parameter dalam gelung di atas meja yang dipanggil "Throughput." Parameter khusus yang digunakan berbeza-beza bergantung pada atribut "DeviceName" baris.

Percubaan Awal

Pada mulanya, pengguna mencuba kod berikut tanpa berjaya:

for row in cursor.execute("SELECT * FROM Throughput WHERE DeviceName=%s", %(data['DeviceName'])):
Salin selepas log masuk

Satu lagi percubaan yang tidak berjaya ialah:

for row in cursor.execute("SELECT * FROM Throughput WHERE(DeviceName), values(?)", (data['DeviceName']) ):
Salin selepas log masuk

Kod Kerja Akhir

Akhirnya, pengguna berjaya menyelesaikan isu dengan coretan berikut:

query = "SELECT * FROM Throughput WHERE DeviceName = '%s'" % data['Device Name']
try:
    for row in cursor.execute(query):
Salin selepas log masuk

Pernyataan Berparameter

Pendekatan yang disyorkan ialah menggunakan berparameter kenyataan:

cursor.execute("SELECT * FROM Throughput WHERE DeviceName = ?", data['DeviceName'])
Salin selepas log masuk

Pendekatan ini menawarkan beberapa kelebihan berbanding percubaan sebelumnya:

  • Perlindungan terhadap suntikan SQL
  • Tidak perlu melarikan diri dari mana nilai klausa dengan petikan tunggal
  • Penyediaan SQL hanya berlaku sekali, meningkatkan prestasi untuk seterusnya hukuman mati

Atas ialah kandungan terperinci Bagaimana untuk Selamat Parameter Pernyataan SELECT SQL dalam Python dengan pyodbc?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan