Cara menggunakan pembolehubah untuk melaksanakan pernyataan SQL dalam Python
P粉725827686
P粉725827686 2023-08-21 16:40:37
0
2
477
<p>Saya mempunyai kod Python berikut: </p> <pre class="brush:py;toolbar:false;">cursor.execute("MASUKKAN KE DALAM NILAI jadual var1, var2, var3,") </pra> <p>Di mana <code>var1</code> ialah integer, <code>var2</code> dan <code>var3</code> </p> <p>Bagaimanakah saya boleh menulis nama pembolehubah tanpa perlu Python menjadikannya sebahagian daripada teks pertanyaan? </p>
P粉725827686
P粉725827686

membalas semua(2)
P粉781235689

Pelaksanaan Python DB-API yang berbeza membenarkan pemegang tempat yang berbeza, jadi anda perlu mengetahui yang mana yang anda gunakan -- contohnya (menggunakan MySQLdb):

cursor.execute("INSERT INTO table VALUES (%s, %s, %s)", (var1, var2, var3))

Atau (menggunakan sqlite3 dari perpustakaan standard Python):

cursor.execute("INSERT INTO table VALUES (?, ?, ?)", (var1, var2, var3))

atau cara lain (dalam VALUES之后,你可以使用(:1, :2, :3),或者使用"named styles" (:fee, :fie, :fo) 或者 (%(fee)s, %(fie)s, %(fo)s),在这种情况下,你需要将一个字典作为第二个参数传递给execute函数)。检查你正在使用的DB API模块中的paramstylepemalar rentetan, dan lihat gaya param di http://www.python.org/dev/peps/pep-0249/untuk semua cara untuk lulus parameter!

P粉763662390
cursor.execute("INSERT INTO table VALUES (%s, %s, %s)", (var1, var2, var3))

Sila ambil perhatian bahawa parameter diluluskan sebagai tuple, (a, b, c)。如果您只传递一个参数,元组需要以逗号结尾,(a,).

API pangkalan data akan melarikan diri dengan betul dan memetik pembolehubah. Sila berhati-hati untuk tidak menggunakan operator pemformatan rentetan (%) kerana

  1. Ia tidak melakukan sebarang pelarian atau petikan.
  2. Ia terdedah kepada serangan pemformatan rentetan yang tidak terkawal seperti SQL injection.
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan