Skip to main content

Common helper utility functions used when connecting to sqlite databases and binding SQL values from python variables.

Project description

Utils for Jinja & sqlite

Must setup an .env pointing to a database file DB_FILE; otherwise, will default to test.db.

Setup Jinja Environment to fetch via .sql file

Assumes a basic Jinja environment has been setup:

from jinja2 import Environment
assert isinstance(env, Environment)

Sync

Query the environment using sqlite3,viz:

from utils_jinja_sqlite import get_rows, get_row
# base
params = dict(a="'hello world'")
sql_stmt = env.get_template("test.sql").render(params)

# get all
rows = get_rows(sql_stmt=sql_stmt)
type(rows) # generator

# get one
row = get_row(sql_stmt=sql_stmt) # gets only the first row
type(row) # dict

Async

Query the environment using a aiosqlite3,viz:

from utils_jinja_sqlite import get_rows, get_row
import asyncio
# base
params = dict(a="'hello world'")
sql_stmt = env.get_template("test.sql").render(params)

# get all
rows = a_rows(sql_stmt=sql_stmt)
type(rows) # co-routine
rows_result = asyncio.run(rows)
type(rows_result) # generator

# get one
row = a_row(sql_stmt=sql_stmt)
type(row) # co-routine
row_result = asyncio.run(row)
type(row_result) # dict

Note that this will not work:

for first_stmt_row in get_rows(sql_stmt=sql_stmt1):
    for second_stmt_row in get_rows(sql_stmt=sql_stmt2):
        ... # the first sql_stmt has not yet terminated

SQL string literal binder funcs

Instead of quoting a string literal can use a helper function

from utils_jinja_sqlite import quote_sql_string
params = dict(a=quote_sql_string(hello world))

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

utils-jinja-sqlite-0.0.6.tar.gz (4.7 kB view details)

Uploaded Source

Built Distribution

utils_jinja_sqlite-0.0.6-py3-none-any.whl (4.9 kB view details)

Uploaded Python 3

File details

Details for the file utils-jinja-sqlite-0.0.6.tar.gz.

File metadata

  • Download URL: utils-jinja-sqlite-0.0.6.tar.gz
  • Upload date:
  • Size: 4.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.0b3 CPython/3.10.5 Darwin/21.5.0

File hashes

Hashes for utils-jinja-sqlite-0.0.6.tar.gz
Algorithm Hash digest
SHA256 4439f2ffc9c2ed12e1eb2aa263760a5580e51526b8ee30dfcb62c8ce35f9430c
MD5 a694501353ce552aa5b9c066cb061c8d
BLAKE2b-256 9bd04143b9d2f03a90c80d9412a5e10a39ab1155ddc4bb367d4b34e779b19328

See more details on using hashes here.

File details

Details for the file utils_jinja_sqlite-0.0.6-py3-none-any.whl.

File metadata

File hashes

Hashes for utils_jinja_sqlite-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 35b5ec3c687a199c6ebd00578c84e9da32a88560b828ecd3749af39c1b072770
MD5 9d1520478080b03b0fcf59191f064ed5
BLAKE2b-256 d273e8831d23d96c91f22d7167a3c6e00094ab772cab4884f06bbe5dd9466266

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page