cari

Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk menggunakan pembolehubah dalam pernyataan SQL dalam Python?

<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 menulis nama pembolehubah dalam Python tanpa ia dimasukkan dalam teks pertanyaan? </p>
P粉200138510P粉200138510472 hari yang lalu514

membalas semua(2)saya akan balas

  • P粉545682500

    P粉5456825002023-08-21 13:22:44

    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 sesuatu yang lain (dalam VALUES之后你可以有(:1, :2, :3),或者"命名样式"(:fee, :fie, :fo)或者(%(fee)s, %(fie)s, %(fo)s),在execute的第二个参数中传递一个字典而不是一个映射)。检查你正在使用的DB API模块中的paramstylepemalar rentetan, dan cari gaya param di http://www.python.org/dev/peps/pep-0249/ untuk semua gaya hantaran parameter!

    balas
    0
  • P粉926174288

    P粉9261742882023-08-21 10:38:41

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

    Perhatikan bahawa hujah itu 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.

    balas
    0
  • Batalbalas