通过MySQLdb添加SQL变量
我在找文档的时候遇到了一些麻烦,想要把非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))
这样也应该可以工作。