如何从Python主脚本向外部SQL文件注入动态日期参数?
解决方法
1. 改造SQL文件为模板格式
把MyQuery.sql中的硬编码日期替换成占位符{today_date},保留单引号适配SQL语法:
SELECT * from my_table WHERE date >= '{today_date}'
2. 在Python脚本中替换占位符
读取SQL文件内容后,用字符串的format()方法将占位符替换为当日日期:
from datetime import date today_date = date.today() with open('MyQuery.sql', 'r') as rawSQL: sql_template = rawSQL.read() # 生成最终可执行的SQL字符串 sql = sql_template.format(today_date=today_date)
补充说明
- 这种方式无需正则匹配,靠模板占位符实现精准替换,可读性和维护性更强。
date.today()返回的日期对象会自动转换为YYYY-MM-DD格式的字符串,完全符合SQL的日期格式要求。- 如果后续需要替换多个变量,只需在SQL模板中添加对应占位符(比如
{start_date}、{end_date}),并在format()方法中传入对应参数即可。
内容的提问来源于stack exchange,提问作者Mako212
相关产品推荐
相关产品推荐

