Heim  >  Fragen und Antworten  >  Hauptteil

Verwenden von Variablen zum Ausführen von SQL-Anweisungen in Python

Ich habe den folgenden Python-Code:

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

wobei var1 是整数,var2var3 eine Zeichenfolge ist.

Wie schreibe ich Variablennamen (als Teil des Abfragetextes), ohne Python zu verwenden?

P粉731977554P粉731977554373 Tage vor664

Antworte allen(2)Ich werde antworten

  • P粉718165540

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

    Python DB-API 的不同实现允许使用不同的占位符,因此您需要找出您正在使用的占位符 - 可能是(例如使用 MySQLdb):

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

    或(例如,使用 Python 标准库中的 sqlite3):

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

    或其他(在 VALUES 之后,您可以有 (:1, :2, :3) 或“命名样式” (:fee, : fie, :fo)(%(fee)s, %(fie)s, %(fo)s) ,其中您将字典而不是映射作为第二个参数传递给执行)。检查您正在使用的 DB API 模块中的 paramstyle 字符串常量,并在 http://www.python.org/dev/peps/pep-0249/ 查看所有参数传递样式是什么!

    Antwort
    0
  • P粉521697419

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

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

    请注意,参数以元组形式传递,(a, b, c)。如果您传递单个参数,则元组需要以逗号结尾,(a,)

    数据库 API 对变量进行正确的转义和引用。注意不要使用字符串格式化运算符(%),因为

    1. 它不进行任何转义或引用。
    2. 很容易遭受不受控制的字符串格式攻击,例如SQL_injection

    Antwort
    0
  • StornierenAntwort