在python中强制执行字符串的三重引号

时间:2013-03-24 21:49:16

标签: python mysql string quote

我有一个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。谢谢!

1 个答案:

答案 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 "仅对字符串文字产生影响。如果字符串来自外部源,则引号完全没有意义。