# User Interfaces

`sqlformat`

  The `sqlformat` command line script is distributed with the module. Run sqlformat --help to list available options and for usage hints.

## Pre-commit Hook

`sqlparse` can be integrated with pre-commit to automatically format SQL files before committing them to version control.

To use it, add the following to your `.pre-commit-config.yaml`:

    repos:
      - repo: https://github.com/andialbrecht/sqlparse
        rev: 0.5.4  # Replace with the version you want to use
        hooks:
          - id: sqlformat

The hook will format your SQL files with basic indentation (`--reindent`) by default.

To customize formatting options, override the `args` parameter:

    repos:
      - repo: https://github.com/andialbrecht/sqlparse
        rev: 0.5.4
        hooks:
          - id: sqlformat
            args: [--in-place, --reindent, --keywords, upper, --identifiers, lower]

Important

When overriding `args`, you must include `--in-place` as the first argument, otherwise the hook will not modify your files.

Common formatting options include:

- `--in-place`: Required - modify files in-place (always include this!)

- `--reindent` or `-r`: Reindent statements

- `--keywords upper` or `-k upper`: Convert keywords to uppercase

- `--identifiers lower` or `-i lower`: Convert identifiers to lowercase

- `--indent_width 4`: Set indentation width to 4 spaces

- `--strip-comments`: Remove comments from SQL

Run `sqlformat --help` for a complete list of formatting options.

After adding the configuration, install the pre-commit hooks:

    pre-commit install

The hook will now run automatically before each commit. You can also run it manually on all files:

    pre-commit run sqlformat --all-files

`sqlformat.appspot.com`

  An example Google App Engine application that exposes the formatting features using a web front-end. See https://sqlformat.org/ for details. The source for this application is available from a source code check out of the `sqlparse` module (see `extras/appengine`).