Convenient Wrapper around AioSQL and a Database Connection
Project description
AnoDB
Convenient Wrapper around aiosql and a Database Connection.
Description
This class creates a persistent database connection and imports SQL queries from a file as simple Python functions.
If the connection is broken, a new connection is attempted.
Compared to aiosql
, the point is not to need to pass a connection
as an argument on each call: The DB
class embeds both connection
and query methods.
For concurrent programming (threads, greenlets…), a relevant setup should also consider thread-locals and pooling issues at some higher level.
Example
Install the module with pip install anodb
or whatever method you like.
Once available:
import anodb
# parameters: driver, connection string, SQL file
db = anodb.DB("sqlite3", "test.db", "test.sql")
db.do_some_insert(key=1, val="hello")
db.do_some_update(key=1, val="world")
print("data", db.do_some_select(key=1))
db.commit()
db.close()
With file test.sql
containing something like:
-- name: do_some_select
SELECT * FROM Stuff WHERE key = :key;
-- name: do_some_insert!
INSERT INTO Stuff(key, val) VALUES (:key, :val);
-- name: do_some_update!
UPDATE Stuff SET val = :val WHERE key = :key;
Documentation
The anodb
module provides the DB
class which embeds both a
PEP 249 database connection
(providing methods commit
, rollback
, cursor
, close
and
its connect
counterpart to re-connect) and SQL queries wrapped
into dynamically generated functions by
aiosql.
Such functions may be loaded from a string (add_queries_from_str
) or a
path (add_queries_from_path
).
The DB
constructor parameters are:
db
the name of the database driver:sqlite3
,psycopg
,pymysql
, see aiosql documentation for a list of supported drivers.conn
an optional connection string used to initiate a connection with the driver. For instance,psycopg
accepts a libpq connection string such as:"host=db1.my.org port=5432 dbname=acme user=calvin …"
.queries
a path name or list of path names from which to read query definitions.options
a dictionary or string to pass additional connection parameters.auto_reconnect
whether to attempt a reconnection if the connection is lost. Default isTrue
.debug
whether to generate debugging messages. Default isFalse
.- other named parameters are passed as additional connection parameters.
import anodb
db = anodb.DB("sqlite3", "acme.db", "acme-queries.sql")
db = anodb.DB("duckdb", "acme.db", "acme-queries.sql")
db = anodb.DB("psycopg", "host=localhost dbname=acme", "acme-queries.sql")
db = anodb.DB("psycopg", None, "acme-queries.sql", host="localhost", user="calvin", password="...", dbname="acme")
db = anodb.DB("psycopg2", "host=localhost dbname=acme", "acme-queries.sql")
db = anodb.DB("pygresql", None, "acme-queries.sql", host="localhost:5432", user="calvin", password="...", database="acme")
db = anodb.DB("pg8000", None, "acme-queries.sql", host="localhost", port=5432, user="calvin", password="...", database="acme")
db = anodb.DB("MySQLdb", None, "acme-queries.sql", host="localhost", port=3306, user="calvin", password="...", database="acme")
db = anodb.DB("pymysql", None, "acme-queries.sql", host="localhost", port=3306, user="calvin", password="...", database="acme")
db = anodb.DB("mysql-connector", None, "acme-queries.sql", host="localhost", port=3306, user="calvin", password="...", database="acme")
db = anodb.DB("mariadb", None, "acme-queries.sql", host="localhost", port=3306, user="calvin", password="...", database="acme")
Versions
Sources, documentation and issues are available on GitHub.
Latest version is 8.2 on 2023-07-15.
See all versions
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file anodb-8.2.tar.gz
.
File metadata
- Download URL: anodb-8.2.tar.gz
- Upload date:
- Size: 9.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d71cccc52759b543323d8397be25e681dbb0818a745a2781d646bdfb86cd2331 |
|
MD5 | aea06941566839f06d530d3ba16bcad1 |
|
BLAKE2b-256 | 533525d3b483c52b5ba2a46a76c8a42d156a7f01622f14910afd09e102b29007 |
Provenance
File details
Details for the file anodb-8.2-py3-none-any.whl
.
File metadata
- Download URL: anodb-8.2-py3-none-any.whl
- Upload date:
- Size: 6.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3b99c1c641db2fb65a25072e3f3d93c11815e7b9fc9f8a423e90c829f36943a4 |
|
MD5 | b6880e8edade6e39d3188dcccd097e6d |
|
BLAKE2b-256 | a6d30a566f6d34d5d5908480514efc4483307b5bc3ae9827204d9c4ba8609cd8 |