执行sqlfluff lint遇Jinja模板错误,寻求解决方案
解决SQLFluff Jinja模板加载错误
问题原因
SQLFluff无法定位你的Jinja模板文件,需要明确配置模板加载路径。添加modules/__init__.py是Python包的规范,对SQLFluff的Jinja加载逻辑无效。
解决步骤
1. 创建/修改SQLFluff配置文件
在项目根目录创建sqlfluff.toml(推荐)或.sqlfluff配置文件,添加模板加载器配置:
使用toml格式(sqlfluff.toml)
[sqlfluff] dialect = "snowflake" [templating] # 配置FileSystemLoader,指定项目根目录为搜索路径 loaders = [ { type = "FileSystemLoader", path = "." }, ]
使用ini格式(.sqlfluff)
[sqlfluff] dialect = snowflake [templating] loaders = FileSystemLoader:.
2. 验证导入路径
确保demo.sql中的模板导入路径是相对于配置文件所在根目录的,你的现有写法是正确的:
{% from 'modules/grant_privilege_on_integration_to_role.j2' import grant_privilege_on_integration %}
3. 重新运行lint命令
sqlfluff lint demo.sql
(配置文件已指定dialect,命令行无需重复添加--dialect snowflake,保留也不影响)
额外说明
- SQLFluff的Jinja模板加载依赖配置中的
loaders项,和Python包结构无关,不需要保留__init__.py文件 - 若只想让加载器搜索
modules目录,可把路径改为"./modules",此时demo.sql中的导入路径需简化为grant_privilege_on_integration_to_role.j2
内容的提问来源于stack exchange,提问作者jamiet
相关产品推荐
相关产品推荐

