在Python中强制字符串使用三重引号

-5 投票
1 回答
861 浏览
提问于 2025-04-17 20:10

我有一个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)

"""" 只对字符串字面量有影响。如果字符串是来自外部来源,使用哪种引号就没有意义了。

撰写回答