Skip to main content

A SQL complexity library and CLI

Project description

SQL Complexity Estimator

This package provides a simple algorithm to calculate complexity of SQL expressions.

It's based on SQLGlot abstract syntax tree, so the provided SQL must be compatible with SQLGlot engines.

The rules are the following:

  • +1 per join expression
  • +1 per predicate after WHERE or HAVING
  • +1 per CTE
  • +1 per GROUP BY expression
  • +1 per UNION or INTERSECT
  • +1 per function call
  • +1 per CASE expression

This package is inspired on the comments of this stack overflow thread.

Install

python -m pip install sql-complexity
poetry add sql-complexity
uv add sql-complexity

Run with uvx

uvx --refresh sql-complexity

Run from the CLI

sql-complexity some.sql
cat myfile.sql | sql-complexity

Using it in your code

from sql_complexity import SQLComplexityAssessment

assessor = SQLComplexityAssessment()
score = assessor.assess(contents)
print(score)
print(score.total)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sql_complexity-0.1.5.tar.gz (4.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sql_complexity-0.1.5-py3-none-any.whl (5.7 kB view details)

Uploaded Python 3

File details

Details for the file sql_complexity-0.1.5.tar.gz.

File metadata

  • Download URL: sql_complexity-0.1.5.tar.gz
  • Upload date:
  • Size: 4.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.5

File hashes

Hashes for sql_complexity-0.1.5.tar.gz
Algorithm Hash digest
SHA256 4293558fe9ddfff09727b9ba591869f1b2f02a0d44cff26132587f35d42d6412
MD5 4e886f786a96e00ceb88a8b553f1497e
BLAKE2b-256 4e8b4167710f583fb687ba15cbe988e90d15b0077e497d1ac41828080481bf05

See more details on using hashes here.

File details

Details for the file sql_complexity-0.1.5-py3-none-any.whl.

File metadata

File hashes

Hashes for sql_complexity-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 87d264e9ca8a464072d81fd26b25686e4606724aaa59b7f27c4d96583f23877e
MD5 f7dabac6aa14eed6d749f461c0eaa453
BLAKE2b-256 43de7767ea8c990405882b97a201cc6b6b07e785b54f7ae73cad3e797bbed378

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page