【问题标题】:enforce triple quotes around strings in python [closed]在python中的字符串周围强制使用三引号[关闭]
【发布时间】:2026-01-21 03:50:02
【问题描述】:

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

【问题讨论】:

  • 你知道""""""""完全一样
  • 三重引号只是形成字符串的语法。它们不是最终生成的字符串的一部分。
  • 我不明白这个问题。 sql表中到底是什么?它是否包含查询:SELECT * FROM TABLE WHERE COL1 = '%s' and COL2 = '%s'?一个python代码片段:qry = "SELECT * FROM TABLE WHERE COL1 = '%s' and COL2 = '%s' "?
  • 另外,清理您的输入。以免我们忘记小鲍比droptables。 xkcd.com/327
  • 您将'qry = "SELECT * FROM TABLE WHERE COL1 = '%s' and COL2 = '%s' "' 存储在您的数据库中。 o_O(@JakobBowyer 这是 Bobby Tables ......)

标签: python mysql string quote


【解决方案1】:

我不明白你的问题:

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)

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

【讨论】:

  • 非常感谢您的帮助,埃里克。问题解决了。无需使用"""
  • @tonystarkix:如果这解决了问题,记得点击勾
最近更新 更多