sqlparse: A Non-Validating SQL Parser for Python

raw JSON →
0.5.5 verified Tue May 12 auth: no python install: verified quickstart: verified

sqlparse is a non-validating SQL parser for Python, providing support for parsing, splitting, and formatting SQL statements. The current version is 0.5.5, released on March 28, 2026, with a release cadence of approximately every 6 months.

pip install sqlparse
error ModuleNotFoundError: No module named 'sqlparse'
cause The 'sqlparse' library has not been installed in the current Python environment.
fix
pip install sqlparse
error TypeError: format() got an unexpected keyword argument 'options'
cause The `sqlparse.format` function expects formatting options as direct keyword arguments, not as a dictionary passed via an 'options' parameter.
fix
Pass formatting options directly as keyword arguments, for example: sqlparse.format(sql_string, reindent=True, keyword_case='upper').
error AttributeError: 'Token' object has no attribute 'tokens'
cause When iterating through the tokens of a parsed SQL statement, not all tokens are `TokenList` (group) objects; simple `Token` objects do not have a `tokens` attribute.
fix
Check if a token is a group using token.is_group before attempting to access its tokens attribute or iterating over it. For example:
import sqlparse
sql = 'SELECT * FROM foo;'
parsed = sqlparse.parse(sql)[0]
for token in parsed.tokens:
    if token.is_group:
        print(f"Group: {token.normalized}")
        for subtoken in token.tokens:
            print(f"  Subtoken: {subtoken.normalized}")
    else:
        print(f"Token: {token.normalized}")
breaking Ensure that sqlparse is installed in your environment to avoid ImportError.
fix Install sqlparse using pip: pip install sqlparse
python os / libc status wheel install import disk
3.10 alpine (musl) - - 0.03s 18.1M
3.10 slim (glibc) - - 0.02s 19M
3.11 alpine (musl) - - 0.04s 20.0M
3.11 slim (glibc) - - 0.04s 21M
3.12 alpine (musl) - - 0.04s 11.9M
3.12 slim (glibc) - - 0.03s 12M
3.13 alpine (musl) - - 0.03s 11.6M
3.13 slim (glibc) - - 0.03s 12M
3.9 alpine (musl) - - 0.03s 17.6M
3.9 slim (glibc) - - 0.02s 18M

A quickstart guide demonstrating how to split, format, and parse SQL statements using sqlparse.

import sqlparse

# Split a string containing two SQL statements:
raw = 'SELECT * FROM foo; SELECT * FROM bar;'
statements = sqlparse.split(raw)

# Format the first statement and print it out:
first = statements[0]
print(sqlparse.format(first, reindent=True, keyword_case='upper'))

# Parsing a SQL statement:
parsed = sqlparse.parse('SELECT * FROM foo')[0]
print(parsed.tokens)