我有一个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;
例如,一个qry文本为SELECT * FROM TABLE WHERE COL1 = '%s' and COL2 = '%s'
在python中,我从sql表中删除了一个名为qry的str。
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。谢谢!
答案 0 :(得分: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)
"""
vs "
仅对字符串文字产生影响。如果字符串来自外部源,则引号完全没有意义。