A tool that lints/fixes SQL code within Python strings using SQLFluff.
# Install from PyPI pip install pylintsql
pylintsql lint
pylintsql fix path/to/directory
pylintsql lint --config /path/to/config
PyLintSQL identifies SQL strings by looking for the --sql marker at the beginning of the string. Only strings with this marker will be processed:
# This SQL string will be linted sql = """--sql SELECT user_id, COUNT(*) as order_count FROM orders WHERE created_at > '2023-01-01' GROUP BY user_id """ # This regular string will be ignored other_text = """ This is not SQL and won't be processed """
PyLintSQL uses pyproject.toml
for configuration, which is also a configuration file for SQLFluff itself. This means you can:
- Use all standard SQLFluff configuration options under
[tool.sqlfluff.*]
sections - Define pylintsql-specific settings under
[tool.pylintsql]
Example configuration:
# SQLFluff configuration [tool.sqlfluff.core] dialect = "bigquery" # Or your preferred dialect max_line_length = 99 exclude_rules = ["RF01", "RF02", "RF04", "ST06"] [tool.sqlfluff.indentation] tab_space_size = 2 indented_joins = false indented_ctes = false # PyLintSQL specific configuration [tool.pylintsql] exclude = [ # Directories/files to exclude ".venv/**", "build/**", "dist/**", "tests/**" ]