首页 > 解决方案 > 如何将字符串作为 f 字符串传递给另一个方法?

问题描述

我计划将多个基于 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}and值。{tbl}

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

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

标签: pythonstringfunctionmethodsf-string

解决方案


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']

推荐阅读