如何将字符串作为 f-string 传递给另一个方法?

How to pass in string as f-string into another method?

我计划将多个基于 f 字符串的模板传递到另一个遍历数据库和表的通用方法中。

我的代码:

@staticmethod
def query1_template():
 query = '''
 SELECT
'{db}' as db_name,
'{tbl}' as tbl_name,
'{config[db][tbl]['definition']}' as definition
'''
return query

def build(self, query, config):
 etl = ''
 for i, db in enumerate(self.datasets):
  for j, tbl in enumerate(self.datasets.get(db)):
   if i > 0 or j > 0: 
    etl += 'UNION ALL'
   etl += query

当前输出:

SELECT
'{db}' as db_name,
'{tbl}' as tbl_name
UNION ALL
SELECT ...

我的预期输出应该实际填写 {db}{tbl} 值。

我也试过 etl += query.format(db, tbl) 但一直收到 db 的关键错误。

有没有办法让这个逻辑起作用?

query1_template()方法中:

query = '''
 SELECT
'{db}' as db_name,
'{tbl}' as tbl_name,
'{definition}' as definition
'''

build()方法中:

etl += query.format(db=db, tbl=tbl, definition=config[db][tbl]['definition']