DB-API made easier
Project description
dbkit is a library that abstracts away at least part of the pain involved in dealing with DB-API 2 compatible database drivers.
Here’s an example:
from dbkit import connect, query from contextlib import closing import sqlite3 with connect(sqlite3, 'counters.db') as ctx, closing(ctx): for counter, value in query('SELECT counter, value FROM counters'): print "%s: %d" % (counter, value)
Overview
dbkit is intended to be used in circumstances where it is impractical or overkill to use an ORM such as SQLObject or SQLAlchemy, but it would be useful to at least abstract away some of the pain involved in dealing with the database.
Features:
Rather than passing around database connections, statements are executed within a database context, thus helping to decouple modules that interface with the database from the database itself and its connection details.
Database contexts contain references to the exceptions exposed by the database driver, thus decoupling exception handling from the database driver.
Easier to use transaction handling.
Easier iteration over resultsets.
Connection pooling. In addition, any code using pooled connections has no need to know connection pooling is in place.
Query logging.
Non-aims:
Abstraction of SQL statements. The idea is to get rid of the more annoying but necessary boilerplate code involved in dealing with DB-API 2 drivers, not to totally abstract away SQL itself.
Installation
dbkit can be installed with either either pip (recommended):
$ pip install dbkit
Or with easy_install:
$ easy_install dbkit
Development
The repos can be found on Github while the documentation can be found on Read the Docs.
Change history
0.2.4 (2015-11-30)
Python 3 support.
0.2.3 (2015-11-26)
Context.cursor() now always creates a transaction. The lack of this outer transaction meant that PostgreSQL would end up with a large number of idle transactions that had neither been committed or rolled back.
0.2.2 (2013-04-04)
Scrap unindent_statement().
Derive all dbkit exceptions from Exception.
Clean up connection pinging code.
Add make_placeholders() for generating statement placeholders safely.
Add to_dict() for converting resultsets to dicts mapped off of a particular field.
0.2.0 (2012-10-16)
Add last_row_id().
Pools now can have custom mediators.
Cursors are now tracked.
Pooled connections are no longer closed prematurely.
Row factories are now usable outside of context safely.
0.1.4 (2012-10-11)
execute*() now returns the number of affected rows.
Add last_row_count and last_row_id to Context.
Remove DummyPool and ThreadAffinePool, though the latter may be returning.
Stablise the behaviour of Pool when dealing with expired connections.
Documentation version is now pegged directly to the library.
0.1.2 (2012-09-02)
Initial revision with a changelog.
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
Built Distribution
File details
Details for the file dbkit-0.2.4.tar.gz
.
File metadata
- Download URL: dbkit-0.2.4.tar.gz
- Upload date:
- Size: 28.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 40310bf877ff54dae9a6c650616bca7ff7505a6ff10334de4f89182c4c3b38c9 |
|
MD5 | 65d9a1c040601fedb63e3f78b2091ee3 |
|
BLAKE2b-256 | 4370e62edce902e8d12c937a28e8e071ef2a05fa78eba62fa1cd77332faef1f9 |
File details
Details for the file dbkit-0.2.4-py2.py3-none-any.whl
.
File metadata
- Download URL: dbkit-0.2.4-py2.py3-none-any.whl
- Upload date:
- Size: 12.1 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b6ffde35c55b5956996c0fe6847cb01c8aadc8fb7a9a90fdfe1c2f40b8821dda |
|
MD5 | 52c29d725e9481daada854e4485c8684 |
|
BLAKE2b-256 | a43e604b43c94ef2c99acd4067a91bdf19f8003ca4adadbade75da8829600325 |