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
DDDasal
2025-01-03 12:58:38669semak imbas

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'])):

Satu lagi percubaan yang tidak berjaya ialah:

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

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

Pernyataan Berparameter

Pendekatan yang disyorkan ialah menggunakan berparameter kenyataan:

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

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!

Kenyataan:
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