andialbrecht/sqlparse
andialbrecht/sqlparse has 4,022 GitHub stars and 779 forks. GitHot measured 0 in 7 days. Last checked 2026-11-05 10:02 UTC. Last push 2026-11-01.
用于 Python 的非校验 SQL 解析器模块
实测星标增长
- 24小时
- 更新延迟
- 7天
- 0
- 15天
- 正在收集历史
- 1个月
- 正在收集历史
各周期内的星标净变化,周期相互重叠,并非每日新增。缺失的测量保持空白。星标代表关注度,不代表软件质量。
README.md
原文sqlparse
[!IMPORTANT] Project Status: End of Maintenance
sqlparse is no longer actively maintained. Version 0.6.1 was its final release.
No further bug fixes, feature updates, or security fixes are planned. The repository and published packages will remain available, but users should not expect ongoing maintenance or security support.
Software Supply Chain Security: To minimize supply chain risks, I will retain control of the sqlparse project on PyPI and this GitHub repository. There are no plans to transfer ownership or grant publishing or commit access to third parties.
After many years of maintaining sqlparse as a volunteer, I have decided to bring the project to a close. A more detailed explanation of this decision is available separately.
THANKS TO ALL USERS AND CONTRIBUTORS! I would like to thank everyone who has contributed to sqlparse over the years.
A non-validating SQL parser for Python. Split scripts into statements, format them, and walk their token tree.
sqlparse tokenizes SQL text and groups the parts it recognizes into a tree of statements, clauses, identifiers and expressions. It accepts any input without validating it, and makes no assumptions about a particular SQL dialect, so vendor extensions and templated SQL parse too. It is a building block for formatters, linters, editors and query analysis tools.
Licensed under the New BSD license.
Install
pip install sqlparse
Usage
Three module-level functions cover most needs: split(), format() and
parse().
Split a script into statements
import sqlparse
sqlparse.split("select * from foo; select * from bar;")
# ['select * from foo;', 'select * from bar;']
Format a statement
print(sqlparse.format("select id,name from users where active=1",
reindent=True, keyword_case="upper"))
SELECT id,
name
FROM users
WHERE active=1
format() accepts the same options as the command line, among them
reindent, keyword_case, strip_comments and indent_width.
Parse and inspect a statement
statement = sqlparse.parse("select id, name from users where active = 1")[0]
print(statement.get_type())
for token in statement.tokens:
if not token.is_whitespace:
print(f"{token.ttype or type(token).__name__!s:20} {token!s}")
SELECT
Token.Keyword.DML select
IdentifierList id, name
Token.Keyword from
Identifier users
Where where active = 1
Tokens with a ttype are leaves. The others are groups you can descend into,
which is how nested constructs like subqueries and CASE expressions are
represented. See
Analyzing SQL statements
for the traversal API.
Command line
Installing sqlparse also provides the sqlformat command. It reads from stdin
when the filename is -, writes to stdout by default, and rewrites files in
place with --in-place:
sqlformat --reindent --keywords upper query.sql
Run sqlformat --help for all formatting options.
Pre-commit hook
Format SQL files on commit with pre-commit:
repos:
- repo: https://github.com/andialbrecht/sqlparse
rev: 0.5.5 # use the latest release
hooks:
- id: sqlformat
args: [--in-place, --reindent, --keywords, upper]
The hook defaults to --in-place --reindent. When overriding args, keep
--in-place, or the hook writes to stdout and leaves your files unchanged.
Links
| Documentation | https://sqlparse.readthedocs.io/ |
| Release notes | https://sqlparse.readthedocs.io/en/latest/changes.html |
| Issues | https://github.com/andialbrecht/sqlparse/issues |
| Discussions | https://github.com/andialbrecht/sqlparse/discussions |
| Online demo | https://sqlformat.org/ |
Contributing
Contributions are welcome. See CONTRIBUTING.md to get started.
sqlparse is maintained in spare time, so it can take a while before an issue or pull request gets a reply. Thanks for your patience. A pull request that comes with tests for the behavior it changes is usually the quickest to review.
For security issues, please follow SECURITY.md rather than opening a public issue.
License
sqlparse is licensed under the New BSD license; see LICENSE for the full text. Parts of the code are based on Pygments, written by Georg Brandl and others.
探索相关项目
Asabeneh/30-Days-Of-Python
30 Days of Python 编程挑战是一份循序渐进的指南,用于在 30 天内学习 Python 编程语言。这项挑战可能需要超过 100 天。请按自己的节奏进行。这些视频或许也有帮助:https://www.youtube.com/channel/UC7PNRuno1rzYPb1xLa4yktw
78,163 星标grafana/grafana
开放且可组合的可观测性与数据可视化平台。可对来自 Prometheus、Loki、Elasticsearch、InfluxDB、Postgres 等众多数据源的指标、日志和追踪进行可视化。
77,699 星标redis/redis
对于正在构建实时数据驱动应用的开发者而言,Redis 是首选、速度最快且功能最丰富的缓存、数据结构服务器和文档与向量查询引擎。
77,199 星标apache/superset
Apache Superset 是一个数据可视化与数据探索平台
75,413 星标