Databank is an easy-to-use Python library for making raw SQL queries in a multi-threaded environment.
Project description
Databank
Databank is an easy-to-use Python library for making raw SQL queries in a multi-threaded environment.
No ORM, no frills. Only raw SQL queries and parameter binding. Thread-safe. Built on top of SQLAlchemy.
Installation
You can install the latest stable version from PyPI:
$ pip install databank
Adapters not included. Install e.g. psycopg2
for PostgreSQL:
$ pip install psycopg2
Usage
Connect to the database of your choice:
>>> from databank import Database
>>> db = Database("postgresql://user:password@localhost/db", pool_size=2)
The keyword arguments are passed directly to SQLAlchemy's create_engine()
function. Depending on the database you connect to, you have options like the size of connection pools.
If you are using
databank
in a multi-threaded environment (e.g. in a web application), make sure the pool size is at least the number of threads.
Let's create a simple table:
>>> db.execute("CREATE TABLE beatles (id SERIAL PRIMARY KEY, member TEXT NOT NULL);")
You can insert multiple rows at once:
>>> params = [
... {"id": 0, "member": "John"},
... {"id": 1, "member": "Paul"},
... {"id": 2, "member": "George"},
... {"id": 3, "member": "Ringo"}
... ]
>>> db.execute_many("INSERT INTO beatles (id, member) VALUES (:id, :member);", params)
Fetch a single row:
>>> db.fetch_one("SELECT * FROM beatles;")
{'id': 0, 'member': 'John'}
But you can also fetch n
rows:
>>> db.fetch_many("SELECT * FROM beatles;", n=2)
[{'id': 0, 'member': 'John'}, {'id': 1, 'member': 'Paul'}]
Or all rows:
>>> db.fetch_all("SELECT * FROM beatles;")
[{'id': 0, 'member': 'John'},
{'id': 1, 'member': 'Paul'},
{'id': 2, 'member': 'George'},
{'id': 3, 'member': 'Ringo'}]
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.