Rumah >pangkalan data >tutorial mysql >Bolehkah saya Melaksanakan Pertanyaan SQL Parameter yang Disimpan dalam Pembolehubah dalam Python?

Bolehkah saya Melaksanakan Pertanyaan SQL Parameter yang Disimpan dalam Pembolehubah dalam Python?

Susan Sarandon
Susan Sarandonasal
2025-01-12 08:32:42633semak imbas

Can I Execute Parameterized SQL Queries Stored in a Variable in Python?

Laksanakan pertanyaan SQL berparameter daripada pembolehubah dalam Python

Untuk mengelakkan suntikan SQL, apabila melaksanakan pertanyaan SQL berparameter dalam Python, biasanya disyorkan untuk menggunakan format berikut:

<code class="language-python">cursor.execute("INSERT INTO table VALUES (%s, %s, %s)", var1, var2, var3)</code>

Walau bagaimanapun, adalah wajar untuk meneroka soalan sama ada adalah mungkin untuk menyimpan pertanyaan dalam pembolehubah dan melaksanakannya kemudian.

execute() Tandatangan kaedah

Untuk memahami sebab ini mungkin tidak berfungsi, kita perlu menyemak tandatangan kaedah execute():

<code class="language-python">cursor.execute(self, query, args=None)</code>

Kaedah ini memerlukan sehingga tiga parameter: pertanyaan dan jujukan parameter atau peta pilihan.

Cuba laksanakan pertanyaan daripada pembolehubah

Jika kita cuba melaksanakan pertanyaan yang disimpan dalam pembolehubah sql, contohnya:

<code class="language-python">sql = "INSERT INTO table VALUES (%s, %s, %s)"
cursor.execute(sql)</code>

Kami akan mendapat ralat kerana sql mengandungi empat parameter, termasuk pembolehubah itu sendiri.

Asingkan pertanyaan dan parameter

Untuk melaksanakan pertanyaan daripada pembolehubah, kita boleh memisahkan pertanyaan dan parameter:

<code class="language-python">sql = "INSERT INTO table VALUES (%s, %s, %s)"
args = var1, var2, var3
cursor.execute(sql, args)</code>

Dalam kes ini, sql mengandungi pertanyaan dan args mengandungi parameter. Dengan menyatakan execute(sql, args), kami boleh berjaya melaksanakan pertanyaan berparameter.

Cara lain

Sebagai alternatif, kita boleh menggunakan pendekatan dua pembolehubah yang lebih intuitif:

<code class="language-python">sql = "INSERT INTO table VALUES (%s, %s, %s)"
cursor.execute(sql, (var1, var2, var3))</code>

Pendekatan ini menghapuskan keperluan untuk mencipta pembolehubah berasingan untuk pertanyaan dan parameter.

Atas ialah kandungan terperinci Bolehkah saya Melaksanakan Pertanyaan SQL Parameter yang Disimpan dalam Pembolehubah dalam Python?. 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