如何在SQL-Fluff中启用Core-Rules并解决TomlDecodeError?
SQL-Fluff启用core规则组时的TOML解析错误
我希望仅在SQL-Fluff中启用core规则组,因此在pyproject.toml文件中添加了以下内容:
[tool.sqlfluff] rules = "core"
但运行时出现了如下错误:
File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\toml\decoder.py", line 134, in load return loads(ffile.read(), _dict, decoder) File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\toml\decoder.py", line 478, in loads raise TomlDecodeError("What? " + group + toml.decoder.TomlDecodeError: What? rules already exists?{'rules': 'core', 'core': {'dialect': 'tsql', 'exclude_rules': 'L016,L057,L029'}} (line 24 column 1 char 483)
错误含义
这个错误是TOML解析器抛出的,说明你的pyproject.toml文件中重复定义了rules配置项。从错误信息附带的字典可以看出,文件里已经存在一个rules配置,你新增的rules = "core"导致了键重复,TOML不允许同一个配置块下出现重复的键。
解决方法
要实现仅启用core规则组的需求,按以下步骤操作:
- 打开你的
pyproject.toml,找到所有和rules相关的配置,删除重复的rules = "core"行(或删除原本存在的重复项) - 配置结构要区分顶层规则组指定和core组的细节配置,正确的写法如下:
[tool.sqlfluff] # 指定仅启用core规则组 rules = "core" # core规则组的具体配置(方言、排除规则等) [tool.sqlfluff.core] dialect = "tsql" exclude_rules = "L016,L057,L029"
这样配置既明确启用了core规则组,又保留了core组的自定义细节,不会出现重复键的问题。
内容的提问来源于stack exchange,提问作者phlope
相关产品推荐
相关产品推荐

