使用字典中的引用替换字符串中的元素



我想使用列表中带有字典的列表引用以字符串格式替换 SQL 脚本中的参数。这是示例 SQL 脚本:

sql = "SELECT DISTINCT id, channel AS value FROM ${source} WHERE channel IN (${channel});"

所有查询都采用以下结构:

{'name': 'example', 'description': 'example1', 'sql': 'SELECT DISTINCT id, channel AS value FROM ${source} WHERE channel IN (${channel});'}

字典如下所示:

my_dict = [{"source":"table_name","channel":["abc","abcd"]}]

所需的输出为:

SELECT DISTINCT pnr, channel AS value FROM table_name WHERE channel IN ("abc", "abcd");

注意:通道参数可以具有单个值:my_dict = [{"source":"table_name","channel":["abc"]}]牢记这一点非常重要。

我正在考虑.split查询并替换参数,但由于某种原因它不起作用并且通道没有引号。我需要将它们放在引号中,以便稍后可以执行查询。

queries = sql.split()
final_string = ' '.join(str(my_dict.get(word, word)) for word in queries)

我找到了另一个解决方案,但无法为我的情况实施:用 python 字典中的值替换字符串中的值

你拥有的不是字典,而是列表。如果您对列表第一个位置的字典感兴趣,您可以使用 f 字符串并执行以下操作:

>>> sql = f"SELECT DISTINCT id, channel AS value FROM {my_dict[0]['source']} WHERE channel IN {tuple(my_dict[0]['channel'])};"
>>> sql
"SELECT DISTINCT id, channel AS value FROM table_name WHERE channel IN ('abc', 'abcd');"

最新更新