如何用%格式化替代SQL查询的f-string?解决日志记录问题
替换SQL查询中的f-string为%格式化方式
将SQL查询的f-string格式替换为%格式化,既可以实现参数填充,也能满足日志记录原始查询模板的需求,修改后的代码如下:
import logging logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') # 定义SQL查询模板,用%s作为参数占位符 query_template = """(select * from %s.%s where xyz =4 and abc = 1 fetch first 10000 rows only)as some_name""" # 使用%运算符填充参数 query_random = query_template % (SCHEMA, TABLE_NAME) # 记录原始模板和填充后的SQL到日志 logging.info("SQL查询模板: %s", query_template) logging.info("填充后的SQL查询: %s", query_random) df = spark.read.format("jd")\ .option("url", jd_url)\ .option("driver", jd_driver)\ .option("dbtable", query_random)\ .option("user", user)\ .option("password", password).load() print(df)
修改说明
- 单独定义带占位符的SQL模板,避开f-string立即替换参数的特性,方便留存原始查询结构
- 通过
%运算符将SCHEMA和TABLE_NAME依次填充到模板的占位符中 - 日志可分别记录原始模板与最终执行的SQL语句,解决f-string无法记录查询模板的问题
内容的提问来源于stack exchange,提问作者Rahul
相关产品推荐
相关产品推荐

