Rumah  >  Soal Jawab  >  teks badan

Menggunakan pembolehubah untuk melaksanakan pernyataan SQL dalam Python

Saya mempunyai kod Python berikut:

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

di mana var1 是整数,var2var3 ialah rentetan.

Bagaimana untuk menulis nama pembolehubah (sebagai sebahagian daripada teks pertanyaan) tanpa menggunakan Python?

P粉731977554P粉731977554373 hari yang lalu663

membalas semua(2)saya akan balas

  • P粉718165540

    P粉7181655402023-10-13 14:17:00

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

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

    atau (contohnya, menggunakan sqlite3 daripada perpustakaan standard Python):

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

    atau lain-lain (dalam VALUES 之后,您可以有 (:1, :2, :3) 或“命名样式” (:fee, : fie, :fo)(%(fee)s, %(fie)s, %(fo)s) ,其中您将字典而不是映射作为第二个参数传递给执行)。检查您正在使用的 DB API 模块中的 paramstyle pemalar rentetan dan dalam http://www.python.org/dev/peps/pep-0249/ Lihat apakah semua gaya hantaran hujah!

    balas
    0
  • P粉521697419

    P粉5216974192023-10-13 00:59:08

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

    Perhatikan bahawa parameter dihantar dalam tuple, (a, b, c)。如果您传递单个参数,则元组需要以逗号结尾,(a,).

    API pangkalan data keluar dengan betul dan memetik pembolehubah. Berhati-hati untuk tidak menggunakan operator pemformatan rentetan (%) kerana

    1. Ia tidak melakukan sebarang pelarian atau petikan.
    2. Terdedah kepada serangan pemformatan rentetan yang tidak terkawal seperti SQL_injection.

    balas
    0
  • Batalbalas