jinja2sql


Namejinja2sql JSON
Version 0.3.0 PyPI version JSON
download
home_pagehttps://github.com/antonrh/jinja2sql
SummaryJinja Templates to SQL
upload_time2023-11-17 07:22:53
maintainer
docs_urlNone
authorAnton Ruhlov
requires_python>=3.8,<4.0
licenseMIT
keywords sql query queries template jinja database db
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Jinja2SQL (Jinja To SQL)

`Jinja2SQL` is a simple and efficient library for generating SQL queries from [Jinja2](https://jinja.palletsprojects.com/en/3.1.x/) templates. It is type-friendly and offers `async` support, drawing significant inspiration from the excellent library at [jinjasql](https://github.com/sripathikrishnan/jinjasql).

[![CI](https://github.com/antonrh/jinja2sql/actions/workflows/ci.yml/badge.svg)](https://github.com/antonrh/jinja2sql/actions/workflows/ci.yml)
[![codecov](https://codecov.io/gh/antonrh/jinja2sql/branch/main/graph/badge.svg?token=67CLD19I0C)](https://codecov.io/gh/antonrh/jinja2sql)
[![Documentation Status](https://readthedocs.org/projects/jinja2sql/badge/?version=latest)](https://jinja2sql.readthedocs.io/en/latest/?badge=latest)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)

---
Documentation

http://jinja2sql.readthedocs.io/

---

## Requirements

`Python 3.8+` and `Jinja2 3.1.2+`.

## Installation

Install using `pip`:

```shell
pip install jinja2sql
```

or using `poetry`:

```shell
poetry add jinja2sql
```

## Quick Example

```python
from jinja2sql import Jinja2SQL


j2sql = Jinja2SQL(param_style="named")  # 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:

```python
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:


```python
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}"
```

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/antonrh/jinja2sql",
    "name": "jinja2sql",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8,<4.0",
    "maintainer_email": "",
    "keywords": "sql,query,queries,template,jinja,database,db",
    "author": "Anton Ruhlov",
    "author_email": "antonruhlov@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/fc/3c/d1b3b5fc8603cff1c5a6e1fbf963dc9ef2a25968f37f181d4bacfb30d601/jinja2sql-0.3.0.tar.gz",
    "platform": null,
    "description": "# Jinja2SQL (Jinja To SQL)\n\n`Jinja2SQL` is a simple and efficient library for generating SQL queries from [Jinja2](https://jinja.palletsprojects.com/en/3.1.x/) templates. It is type-friendly and offers `async` support, drawing significant inspiration from the excellent library at [jinjasql](https://github.com/sripathikrishnan/jinjasql).\n\n[![CI](https://github.com/antonrh/jinja2sql/actions/workflows/ci.yml/badge.svg)](https://github.com/antonrh/jinja2sql/actions/workflows/ci.yml)\n[![codecov](https://codecov.io/gh/antonrh/jinja2sql/branch/main/graph/badge.svg?token=67CLD19I0C)](https://codecov.io/gh/antonrh/jinja2sql)\n[![Documentation Status](https://readthedocs.org/projects/jinja2sql/badge/?version=latest)](https://jinja2sql.readthedocs.io/en/latest/?badge=latest)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n\n---\nDocumentation\n\nhttp://jinja2sql.readthedocs.io/\n\n---\n\n## Requirements\n\n`Python 3.8+` and `Jinja2 3.1.2+`.\n\n## Installation\n\nInstall using `pip`:\n\n```shell\npip install jinja2sql\n```\n\nor using `poetry`:\n\n```shell\npoetry add jinja2sql\n```\n\n## Quick Example\n\n```python\nfrom jinja2sql import Jinja2SQL\n\n\nj2sql = Jinja2SQL(param_style=\"named\")  # default param style is \"named\"\n\nquery, params = j2sql.from_string(\n    \"SELECT * FROM {{ table | identifier }} WHERE email = {{ email }}\",\n    context={\"table\": \"users\", \"email\": \"user@mail.com\"},\n)\n\n# using with your favorite database driver connection\n\nconn.execute(query, params)\n```\n\n### Param Styles\n\n`Jinja2SQL` supports different param styles depending on the database driver you are using.\n\nYou can choose between the following supported param styles:\n\n```python\nfrom jinja2sql import Jinja2SQL\n\n\nj2sql = Jinja2SQL(param_style=\"named\")  # default\n\nquery, params = j2sql.from_string(\n    \"SELECT * FROM table WHERE param = {{ param }}\",\n    context={\"param\": ...},\n    param_style=\"named\",  # or \"qmark\", \"numeric\", \"format\", \"pyformat\", \"asyncpg\"\n)\n```\n\n| param_style   | Example     |\n| ------------- | ----------- |\n| `named`       | `:param`    |\n| `qmark`       | `?`         |\n| `numeric`     | `:1`        |\n| `format`      | `%s`        |\n| `pyformat`    | `%(param)s` |\n| `asyncpg`     | `$1`        |\n\n\nor you can provide a custom function to format your database specific param style:\n\n\n```python\nfrom jinja2sql import Jinja2SQL\n\n\nj2sql = Jinja2SQL()\n\nquery, params = j2sql.from_string(\n    \"SELECT * FROM table WHERE column = {{ param }}\",\n    context={\"param\": ...},\n    param_style=lambda key, _: f\"{{{key}}}\",\n)\n\nassert query == \"SELECT * FROM table WHERE column = {email}\"\n```\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Jinja Templates to SQL",
    "version": "0.3.0",
    "project_urls": {
        "Homepage": "https://github.com/antonrh/jinja2sql",
        "Repository": "https://github.com/antonrh/jinja2sql"
    },
    "split_keywords": [
        "sql",
        "query",
        "queries",
        "template",
        "jinja",
        "database",
        "db"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "02047d4fe6b18ec63b31201d3f15c12b995ba9c5775728a06badc2500ab599aa",
                "md5": "9c8d0437baf255d073b67cb4ceb5feb6",
                "sha256": "5090da3e2a820ab4a2dc6724d93c1ab3c0cb44217abeadf7a3729df15227d0c9"
            },
            "downloads": -1,
            "filename": "jinja2sql-0.3.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "9c8d0437baf255d073b67cb4ceb5feb6",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8,<4.0",
            "size": 6775,
            "upload_time": "2023-11-17T07:22:52",
            "upload_time_iso_8601": "2023-11-17T07:22:52.309387Z",
            "url": "https://files.pythonhosted.org/packages/02/04/7d4fe6b18ec63b31201d3f15c12b995ba9c5775728a06badc2500ab599aa/jinja2sql-0.3.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fc3cd1b3b5fc8603cff1c5a6e1fbf963dc9ef2a25968f37f181d4bacfb30d601",
                "md5": "28de5d1b0a1c0402eb9979dc0e3beefe",
                "sha256": "a34965f4b81062b5b4951bb89147d3379e2eee6156fd57b4689f59b27519bdd3"
            },
            "downloads": -1,
            "filename": "jinja2sql-0.3.0.tar.gz",
            "has_sig": false,
            "md5_digest": "28de5d1b0a1c0402eb9979dc0e3beefe",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8,<4.0",
            "size": 6693,
            "upload_time": "2023-11-17T07:22:53",
            "upload_time_iso_8601": "2023-11-17T07:22:53.690001Z",
            "url": "https://files.pythonhosted.org/packages/fc/3c/d1b3b5fc8603cff1c5a6e1fbf963dc9ef2a25968f37f181d4bacfb30d601/jinja2sql-0.3.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-11-17 07:22:53",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "antonrh",
    "github_project": "jinja2sql",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "jinja2sql"
}
        
Elapsed time: 0.19951s