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
。
我是 运行 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
。