JinjaSQL2
raw JSON → 0.1.12 verified Fri May 01 auth: no python
Generate SQL queries and corresponding bind parameters using Jinja2 templates. Version 0.1.12 is the latest, with recent security upgrades and removal of older Python support. Release cadence is irregular, primarily for bug fixes and security updates.
pip install jinjasql2 Common errors
error ModuleNotFoundError: No module named 'jinjasql2' ↓
cause Importing from 'jinjasql2' instead of 'jinjasql'.
fix
Change import to 'from jinjasql import JinjaSql'.
error jinjasql.exceptions.TemplateSyntaxError: Unexpected token '{{' ↓
cause Using Jinja2 template syntax without binding parameters correctly, or using identifier clause in version <0.1.9.
fix
Ensure template syntax is correct and consider upgrading to 0.1.9+ for identifier support.
error AttributeError: 'JinjaSql' object has no attribute 'prepare_query' ↓
cause Using older API; 'prepare_query' was added in 0.1.8? Check docs.
fix
Use 'prepare_query' method; if it's missing, upgrade jinjasql2.
Warnings
breaking Version 0.1.10 dropped support for Python 3.6 and lower. Use Python 3.7+. ↓
fix Upgrade Python to 3.7 or later.
gotcha The package name is 'jinjasql2' but the import module is 'jinjasql'. Do not import from 'jinjasql2'. ↓
fix Use 'from jinjasql import JinjaSql'.
deprecated Old-style param_style 'format' and 'pyformat' may be deprecated. Use 'named' or 'qmark'. ↓
fix Set param_style='named' or 'qmark' to avoid issues.
gotcha Identifier clauses (e.g., dynamic table names) are only supported in version 0.1.9+. Using them in older versions will cause syntax errors. ↓
fix Upgrade to 0.1.9+ or avoid identifier syntax.
Imports
- JinjaSql wrong
from jinjasql2 import JinjaSqlcorrectfrom jinjasql import JinjaSql
Quickstart
from jinjasql import JinjaSql
j = JinjaSql(param_style='named')
template = "SELECT * FROM mytable WHERE id = {{ id }}"
query, bind_params = j.prepare_query(template, {'id': 10})
print(query) # SELECT * FROM mytable WHERE id = :id
print(bind_params) # {'id': 10}