SQL 前 3.x Python 的正确查询

Proper SQL Queries for pre-3.x Python

我是 运行 Linux 和 Python 2.7 上的 [Water] 仪表数据管理系统。我一直在阅读像 this.

这样的帖子

构建查询的正确、安全的语法是什么,而不必使用涉及 %s 的不太安全的方法?

rc = test_cur.execute("select m.* from meter m where m.acct_no = '%s' ", acct_no)

我根据遇到的错误尝试了几种方法。

这里的%s不代表一个Python字符串格式化占位符。在本例中,这是一个 MySQL 驱动程序 query parameterization placeholder。占位符由数据库驱动程序替换,参数在单独的参数中传递给 execute()。这与常规字符串格式不同。

请注意,在这种情况下,您不需要在 %s 周围加上引号 - 驱动程序将根据参数类型自动决定是否需要引号:

rc = test_cur.execute("select m.* from meter m where m.acct_no = %s", (acct_no, ))

还要注意包含在 元组 中的 acct_no