通过MySQLdb添加SQL变量

0 投票
1 回答
521 浏览
提问于 2025-04-17 10:08

我在找文档的时候遇到了一些麻烦,想要把非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 个回答

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数据库接口会自动禁用某些功能,并要求重新处理变量的转义和引用。使用字符串格式化操作符是不必要的,在这种情况下,它并不会对变量的引用进行任何格式化。你可以随意格式化最终的变量数组,只是不要像你之前那样使用%操作符。如果我没理解错,原因在于这些变量是绑定的,而不是直接格式化到文本中,这样就不会发生注入攻击。

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))

这样也应该可以工作。

撰写回答