Skip to main content

Jinja Templates to SQL

Project description

Jinja2SQL (Jinja To SQL)

Jinja2SQL is a simple and efficient library for generating SQL queries from Jinja2 templates. It is type-friendly and offers async support, drawing significant inspiration from the excellent library at jinjasql.

CI codecov Documentation Status


Documentation

http://jinja2sql.readthedocs.io/


Requirements

Python 3.10+ and Jinja2 3.1.2+.

Installation

Install using pip:

pip install jinja2sql

or using poetry:

poetry add jinja2sql

Quick Example

from jinja2sql import Jinja2SQL


j2sql = Jinja2SQL()  # default param_style is "named"

query, params = j2sql.from_string(
    "SELECT * FROM {{ table | identifier }} WHERE email = {{ email }}",
    context={"table": "users", "email": "user@mail.com"},
)

# using with your favorite database driver connection

conn.execute(query, params)

Param Styles

Jinja2SQL supports different param styles depending on the database driver you are using.

You can choose between the following supported param styles:

from jinja2sql import Jinja2SQL


j2sql = Jinja2SQL(param_style="named")  # default

query, params = j2sql.from_string(
    "SELECT * FROM table WHERE param = {{ param }}",
    context={"param": ...},
    param_style="named",  # or "qmark", "numeric", "format", "pyformat", "asyncpg"
)
param_style Example
named :param
qmark ?
numeric :1
format %s
pyformat %(param)s
asyncpg $1

or you can provide a custom function to format your database specific param style:

from jinja2sql import Jinja2SQL


j2sql = Jinja2SQL()

query, params = j2sql.from_string(
    "SELECT * FROM table WHERE column = {{ param }}",
    context={"param": ...},
    param_style=lambda key, _: f"{{{key}}}",
)

assert query == "SELECT * FROM table WHERE column = {email}"

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

jinja2sql-0.11.0.tar.gz (87.3 kB view details)

Uploaded Source

Built Distribution

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

jinja2sql-0.11.0-py3-none-any.whl (6.9 kB view details)

Uploaded Python 3

File details

Details for the file jinja2sql-0.11.0.tar.gz.

File metadata

  • Download URL: jinja2sql-0.11.0.tar.gz
  • Upload date:
  • Size: 87.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for jinja2sql-0.11.0.tar.gz
Algorithm Hash digest
SHA256 e31902c66e5e238ecbd9b6d771eec0d40daa72cc74d1bd4ce0417e5e2d29757b
MD5 2b5110a391dfd4181011313bfd441559
BLAKE2b-256 d729269d59679f47a1df99744a54cb57b7607d44640daeeb1343d58665c2f209

See more details on using hashes here.

File details

Details for the file jinja2sql-0.11.0-py3-none-any.whl.

File metadata

  • Download URL: jinja2sql-0.11.0-py3-none-any.whl
  • Upload date:
  • Size: 6.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for jinja2sql-0.11.0-py3-none-any.whl
Algorithm Hash digest
SHA256 97808137049050264338297806f15a665294ead8871f651909a5a6be90a82dc7
MD5 3a8cf489b3af32895fbcdf845148c1ff
BLAKE2b-256 e27b15efe09576dd19d95da1343a77b9acadb1b44bfd295ecd207356252e8429

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