{"id":27076,"library":"jinjasql2","title":"JinjaSQL2","description":"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.","status":"active","version":"0.1.12","language":"python","source_language":"en","source_url":"https://github.com/pythonutilities/jinjasql","tags":["sql","jinja2","template","query-generation"],"install":[{"cmd":"pip install jinjasql2","lang":"bash","label":"PyPI"}],"dependencies":[{"reason":"Core templating engine for query generation.","package":"Jinja2","optional":false},{"reason":"Used for bind parameter handling (optional? check docs).","package":"SQLAlchemy","optional":true}],"imports":[{"note":"The package name is 'jinjasql2' but the module is 'jinjasql'.","wrong":"from jinjasql2 import JinjaSql","symbol":"JinjaSql","correct":"from jinjasql import JinjaSql"}],"quickstart":{"code":"from jinjasql import JinjaSql\n\nj = JinjaSql(param_style='named')\ntemplate = \"SELECT * FROM mytable WHERE id = {{ id }}\"\nquery, bind_params = j.prepare_query(template, {'id': 10})\nprint(query)   # SELECT * FROM mytable WHERE id = :id\nprint(bind_params)  # {'id': 10}","lang":"python","description":"Basic usage: create a JinjaSql instance, pass a Jinja template and parameters, get SQL and bind parameters."},"warnings":[{"fix":"Upgrade Python to 3.7 or later.","message":"Version 0.1.10 dropped support for Python 3.6 and lower. Use Python 3.7+.","severity":"breaking","affected_versions":">=0.1.10"},{"fix":"Use 'from jinjasql import JinjaSql'.","message":"The package name is 'jinjasql2' but the import module is 'jinjasql'. Do not import from 'jinjasql2'.","severity":"gotcha","affected_versions":"all"},{"fix":"Set param_style='named' or 'qmark' to avoid issues.","message":"Old-style param_style 'format' and 'pyformat' may be deprecated. Use 'named' or 'qmark'.","severity":"deprecated","affected_versions":">=0.1.9"},{"fix":"Upgrade to 0.1.9+ or avoid identifier syntax.","message":"Identifier clauses (e.g., dynamic table names) are only supported in version 0.1.9+. Using them in older versions will cause syntax errors.","severity":"gotcha","affected_versions":"<0.1.9"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Change import to 'from jinjasql import JinjaSql'.","cause":"Importing from 'jinjasql2' instead of 'jinjasql'.","error":"ModuleNotFoundError: No module named 'jinjasql2'"},{"fix":"Ensure template syntax is correct and consider upgrading to 0.1.9+ for identifier support.","cause":"Using Jinja2 template syntax without binding parameters correctly, or using identifier clause in version <0.1.9.","error":"jinjasql.exceptions.TemplateSyntaxError: Unexpected token '{{'"},{"fix":"Use 'prepare_query' method; if it's missing, upgrade jinjasql2.","cause":"Using older API; 'prepare_query' was added in 0.1.8? Check docs.","error":"AttributeError: 'JinjaSql' object has no attribute 'prepare_query'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}