眼眸繁星
作为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所指出的,请不要尝试自己插入参数。常用的客户端库在正确处理数据方面比我们凡人将要好得多。