-5

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

4

1 回答 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)

"""vs"仅对字符串文字有影响。如果字符串来自外部来源,则引号完全没有意义。

于 2013-03-24T22:06:27.337 回答