通过MySQLdb添加SQL变量

时间:2012-01-12 22:58:23

标签: python mysql mysql-python

我无法找到能够将非SQL变量添加到SQL语句的文档官方文档不会在http://dev.mysql.com/doc/refman/5.0/en/user-variables.html处进行。

我如何在python和有效的SQL中执行以下操作?

id, provider_id, title = row[0], row[2], row[4]
cursor.execute("INSERT INTO vendor_id VALUES (%s,%s,%s);"%(id, provider_id, title))

1 个答案:

答案 0 :(得分:2)

你走在正确的轨道上但看起来应该是这样的。

id, provider_id, title = row[0], row[2], row[4]
cursor.execute("INSERT INTO vendor_id VALUES (%s, %s, %s)", id, provider_id, title)

python SQL数据库API会自动禁用并要求重新转换和引用变量。字符串格式化运算符是不必要的,在这种情况下不进行任何变量引用的格式化。您可以按照自己喜欢的方式格式化最终的变量数组,只是不要像使用那样使用%运算符。如果我是正确的,原因是变量是绑定的,而不是格式化到文本中,因此不能进行注入

cursor.execute("INSERT INTO vendor_id VALUES (%s, %s, %s)", (id, provider_id, title))
cursor.execute("INSERT INTO vendor_id VALUES (?, ?, ?)", (id, provider_id, title))

也应该有用。