# CrateDB SQL Parser for Python
This package provides utilities to validate and split SQL statements specifically designed for CrateDB.
It is built upon CrateDB's antlr4 grammar, ensuring accurate parsing tailored to CrateDB's SQL dialect.
It draws inspiration from `sqlparse`.
## Installation.
## Usage:
```python
from cratedb_sqlparse import sqlparse
query = """
SELECT * FROM SYS.SHARDS;
INSERT INTO doc.tbl VALUES (1);
"""
statements = sqlparse(query)
print(len(statements))
# 2
select_query = statements[0]
print(select_query.query)
# 'SELECT * FROM SYS.SHARDS'
print(select_query.type)
# 'SELECT'
print(select_query.tree)
# (statement (query (queryNoWith (queryTerm (querySpec SELECT (selectItem *) FROM (relation (aliasedRelation (relationPrimary (table (qname (ident (unquotedIdent SYS)) . (ident (unquotedIdent (nonReserved SHARDS)))))))))))))
sqlparse('SUUULECT * FROM sys.shards')
# cratedb_sqlparse.parser.parser.ParsingException: line1:0 mismatched input 'SUUULECT' expecting {'SELECT', 'DEALLOCATE', ...}
```
## Development
```shell
git clone https://github.com/crate/cratedb-sqlparse
cd cratedb-sqlparse/cratedb_sqlparse_py
python3 -m venv .venv
source .venv/bin/activate
pip install --editable='.[develop,generate,release,test]'
poe check
```
Raw data
{
"_id": null,
"home_page": null,
"name": "cratedb-sqlparse",
"maintainer": null,
"docs_url": null,
"requires_python": "<3.13,>=3.8",
"maintainer_email": null,
"keywords": "antlr4, antlr4 grammar, cratedb, grammar, sql, sql grammar, sql parser, sql parsing",
"author": null,
"author_email": "Ivan Sanchez Valencia <ivan.sanchezvalencia@crate.io>",
"download_url": "https://files.pythonhosted.org/packages/c0/4d/1ae279be0c66ebd361c3ea30221d9b0c79b5dff8eb3f6c72708130c1d9a1/cratedb_sqlparse-0.0.2.tar.gz",
"platform": null,
"description": "# CrateDB SQL Parser for Python\n\nThis package provides utilities to validate and split SQL statements specifically designed for CrateDB.\n\nIt is built upon CrateDB's antlr4 grammar, ensuring accurate parsing tailored to CrateDB's SQL dialect.\n\nIt draws inspiration from `sqlparse`.\n\n## Installation.\n\n## Usage:\n\n```python\nfrom cratedb_sqlparse import sqlparse\n\nquery = \"\"\"\n SELECT * FROM SYS.SHARDS;\n INSERT INTO doc.tbl VALUES (1);\n\"\"\"\nstatements = sqlparse(query)\n\nprint(len(statements))\n# 2\n\nselect_query = statements[0]\n\nprint(select_query.query)\n# 'SELECT * FROM SYS.SHARDS'\n\nprint(select_query.type)\n# 'SELECT'\n\nprint(select_query.tree)\n# (statement (query (queryNoWith (queryTerm (querySpec SELECT (selectItem *) FROM (relation (aliasedRelation (relationPrimary (table (qname (ident (unquotedIdent SYS)) . (ident (unquotedIdent (nonReserved SHARDS)))))))))))))\n\nsqlparse('SUUULECT * FROM sys.shards')\n# cratedb_sqlparse.parser.parser.ParsingException: line1:0 mismatched input 'SUUULECT' expecting {'SELECT', 'DEALLOCATE', ...}\n```\n\n\n## Development\n```shell\ngit clone https://github.com/crate/cratedb-sqlparse\ncd cratedb-sqlparse/cratedb_sqlparse_py\npython3 -m venv .venv\nsource .venv/bin/activate\npip install --editable='.[develop,generate,release,test]'\npoe check\n```\n",
"bugtrack_url": null,
"license": "Apache License 2.0",
"summary": "Parsing utilities to validate and split SQL statements for CrateDB.",
"version": "0.0.2",
"project_urls": {
"changelog": "https://github.com/crate/cratedb-sqlparse/blob/main/CHANGES.md",
"documentation": "https://github.com/crate/cratedb-sqlparse",
"homepage": "https://github.com/crate/cratedb-sqlparse",
"repository": "https://github.com/crate/cratedb-sqlparse"
},
"split_keywords": [
"antlr4",
" antlr4 grammar",
" cratedb",
" grammar",
" sql",
" sql grammar",
" sql parser",
" sql parsing"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "291ec6fa83205dd4f86305f34fdee560eb66a5b8381b2702b45f20a2e45628a5",
"md5": "17c3f1a4193af2b3a7977b13bc2c0c48",
"sha256": "5106d66b91656de5d778c8479462e0010d35ca44d990ce0f75862d3621071d3e"
},
"downloads": -1,
"filename": "cratedb_sqlparse-0.0.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "17c3f1a4193af2b3a7977b13bc2c0c48",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<3.13,>=3.8",
"size": 120856,
"upload_time": "2024-05-21T00:01:48",
"upload_time_iso_8601": "2024-05-21T00:01:48.002602Z",
"url": "https://files.pythonhosted.org/packages/29/1e/c6fa83205dd4f86305f34fdee560eb66a5b8381b2702b45f20a2e45628a5/cratedb_sqlparse-0.0.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c04d1ae279be0c66ebd361c3ea30221d9b0c79b5dff8eb3f6c72708130c1d9a1",
"md5": "cd063db9ad679c632372bdd146269164",
"sha256": "aac4f93556ee6eee5ca837f3d2227d418cee18c156702882605bf7b34cda4de8"
},
"downloads": -1,
"filename": "cratedb_sqlparse-0.0.2.tar.gz",
"has_sig": false,
"md5_digest": "cd063db9ad679c632372bdd146269164",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<3.13,>=3.8",
"size": 119453,
"upload_time": "2024-05-21T00:02:20",
"upload_time_iso_8601": "2024-05-21T00:02:20.377772Z",
"url": "https://files.pythonhosted.org/packages/c0/4d/1ae279be0c66ebd361c3ea30221d9b0c79b5dff8eb3f6c72708130c1d9a1/cratedb_sqlparse-0.0.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-05-21 00:02:20",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "crate",
"github_project": "cratedb-sqlparse",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "antlr4-tools",
"specs": [
[
"<",
"0.3"
]
]
},
{
"name": "poethepoet",
"specs": [
[
"<",
"0.27"
]
]
},
{
"name": "requests",
"specs": [
[
"<",
"3"
]
]
}
],
"lcname": "cratedb-sqlparse"
}