针对3.x之前版本Python的正确SQL查询

针对3.x之前版本Python的正确SQL查询,python,mysql,python-2.7,mysql-python,Python,Mysql,Python 2.7,Mysql Python,我在Linux和Python 2.7上运行[水表]数据管理系统。我一直在读这样的帖子 构造查询时,不必使用涉及%s的不太安全的方法,正确、安全的语法是什么 rc=test\u cur.execute(“从m表中选择m.*,其中m.acct\u no='%s',acct\u no) 根据我收到的错误,我尝试了几种方法。此处的%s不代表Python字符串格式占位符。在本例中,这是一个MySQL驱动程序。占位符由数据库驱动程序替换为在单独参数中传递给execute()的参数。这与常规字符串格式不同 请

我在Linux和Python 2.7上运行[水表]数据管理系统。我一直在读这样的帖子

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

rc=test\u cur.execute(“从m表中选择m.*,其中m.acct\u no='%s',acct\u no)

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

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

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

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

另请注意元组中的
账号

谢谢,这很有帮助。