python和mysql匹配吗_Python最佳实践和最安全的方法来连接MySQL和执行查询
作为Bruno回答的扩展,您的MySQL客户端库可能支持几种用于指定命名参数的不同格式。在PEP 249(DB-API)中,您可以编写查询,例如:
'qmark'
>>> cursor.execute("SELECT spam FROM eggs WHERE lumberjack = ?", (lumberjack,))
'数字'
>>> cursor.execute("SELECT spam FROM eggs WHERE lumberjack = :1", (lumberjack,))
“命名”
>>> cursor.execute("SELECT spam FROM eggs WHERE lumberjack = :jack", {'jack': lumberjack})
'格式'
>>> cursor.execute("SELECT spam FROM eggs WHERE lumberjack = %s", (lumberjack,))
'pyformat'
>>> cursor.execute("SELECT spam FROM eggs WHERE lumberjack = %(jack)s", {'jack': lumberjack})
您可以通过查看paramstyle模块级变量来查看您的客户端库支持哪些:
>>> clientlibrary.paramstyle
'pyformat'
上述任何选项都应在处理可能不安全的数据方面做正确的事。正如Bruno所指出的,请不要尝试自己插入参数。常用的客户端库在正确处理数据方面比我们凡人将要好得多。