Verwenden von Variablen zum Ausführen von SQL-Anweisungen in Python
P粉731977554
P粉731977554 2023-10-12 15:06:00
0
2
701

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粉731977554
P粉731977554

Antworte allen(2)
P粉718165540

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/ 查看所有参数传递样式是什么!

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

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

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

  1. 它不进行任何转义或引用。
  2. 很容易遭受不受控制的字符串格式攻击,例如SQL_injection
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage