Skip to main content

Lightweight query access-pattern declaration for ORMs

Project description

query-patterns

Declare query-access patterns in code and verify matching DB indexes. Supports SQLAlchemy and Django, both schema-based and database introspection modes.

What it does

  • Collects all @query_pattern declarations from your Python modules
  • Extracts index definitions from:
    • SQLAlchemy
      • ORM schema (MetaData)
      • Actual DB (Inspector)
    • Django
      • ORM schema (Model._meta.indexes)
      • Actual DB (connection.introspection)
  • Compares (table, columns) tuples
  • Reports:
    • [OK] — index exists
    • [MISSING] — index missing
  • Can be integrated into CI to enforce index coverage

Example output

  • [OK] users('email',)
  • [MISSING] orders('user_id',)

Install

pip install query-patterns

Declare a pattern

from query_patterns import query_pattern

class Repo:
    @query_pattern(table="users", columns=["email"])
    def find(self, email): ...

1. SQLAlchemy Command

# Reads indexes from MetaData
query-patterns sqlalchemy \
  --metadata myapp.db.metadata \
  --module myapp.repo
  
# Auto-discover modules
query-patterns sqlalchemy \
  --metadata myapp.db.metadata
  
# Reads actual indexes from the database
query-patterns sqlalchemy \
  --source db \
  --engine-url postgresql://user:pass@localhost/mydb \
  --module myapp.repo

2. Django Command

# Reads Model._meta.indexes from installed apps
query-patterns django \
  --settings config.settings \
  --module myapp.repo
  
# Auto-discover modules 
query-patterns django \
  --settings config.settings
  
# Reads actual DB indexes using Django introspection
query-patterns django \
  --source db \
  --settings config.settings \
  --module myapp.repo

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

query_patterns-0.1.5.tar.gz (11.8 kB view details)

Uploaded Source

Built Distribution

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

query_patterns-0.1.5-py3-none-any.whl (10.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: query_patterns-0.1.5.tar.gz
  • Upload date:
  • Size: 11.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for query_patterns-0.1.5.tar.gz
Algorithm Hash digest
SHA256 59df563cc32cee82853c7cba00988baaef733a9fd8f5a267a36dae2be3e88df4
MD5 62c3cda3c15a2ab4bab3e2086fe00793
BLAKE2b-256 af949f42ac52ce2ba67b4f6b21da8450dc5f99cf0f9a1615cc66a902cacedee5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: query_patterns-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 10.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for query_patterns-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 63aa0ecf997bf25b8a8216b6b827b09522c0c1f99d188170e30118fddf4c923a
MD5 92862072f834b45ce8ad770d1d47547c
BLAKE2b-256 2f222a2b796576ba183d37909a21f4c4e99dc1c376351b95857b071d33a8b0b9

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