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 hashes)

Uploaded Source

Built Distribution

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

Uploaded Python 3

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