在Python中强制字符串使用三重引号
我有一个mysql表,用来存储一些sql查询语句。
这个表的结构大致是这样的:
CREATE TABLE `queries` (`qry_id` int(11) NOT NULL AUTO_INCREMENT,
`qry_text` varchar(2000) COLLATE utf8_unicode_ci NOT NULL,
`result_table` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL,
`last_run` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`period` int(11) DEFAULT NULL,
`error` tinyint(1) DEFAULT NULL,
PRIMARY KEY (`qry_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
举个例子,其中一个查询语句是 SELECT * FROM TABLE WHERE COL1 = '%s' and COL2 = '%s'
在python中,我从这个sql表中提取了一个字符串,叫做qry。
qry = "SELECT * FROM TABLE WHERE COL1 = '%s' and COL2 = '%s' "
我想要的是:
qry = """SELECT * FROM TABLE WHERE COL1 = '%s' and COL2 = '%s' """ % (var1, var2)
怎么在qry的两边加上三重引号,并且在后面加上 % (var1, var2)。我需要把qry(按照我指定的格式)传给一个API来执行。谢谢!
1 个回答
0
我不太明白你的问题:
def get_dangerous_query():
# do some database access
# For a demo, just return what we know the table contains
return "SELECT * FROM TABLE WHERE COL1 = '%s' and COL2 = '%s'"
qry = get_dangerous_query() % (var1, var2)
"""
和 "
只对字符串字面量有影响。如果字符串是来自外部来源,使用哪种引号就没有意义了。