Skip to main content
Python Software Foundation 20th Year Anniversary Fundraiser  Donate today!

Shared database connections for multi-threaded Django test setups.

Project description


This proxy database backend is designed to speed up multi-threaded testing setups.

It enables those setups (for instance using ``LiveServerTestCase``) to use Django's
standard ``TestCase`` - where each test runs in its own transaction -
instead of the much slower ``TransactionTestCase`` that needs to flush the whole
database between each tests.

It is **NOT** intended for production use, only for faster testing setups.

This project support Django versions 1.6, and Python 2.7, 3.2 and 3.3.


First, install django-shareddb:

.. code-block:: shel

$ pip install django-shareddb

Then, simply update your settings to use its wrapping engine:

.. code-block:: python

'default': {
'ENGINE': 'shareddb.backends.shareddb',
'INNER_ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'test-dbsharing',

Since altering those settings is very frequent, django-shareddb also provides
a simple ``patch_databases`` function:

.. code-block:: python

'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'test-dbsharing',

if os.environ['FAST_TESTS']:
import shareddb
DATABASES = shareddb.patch_databases(DATABASES)

.. note:: ``patch_databases`` accepts two keyword arguments,
``whitelist`` (only alter databases from that list) and
``blacklist`` (never alter databases from that list).

The ``blacklist`` has priority over the ``whitelist``.

Once the settings are ready, simply replace your calls to Django's LiveServerTestCase with the django-shareddb variant:

.. code-block:: python

from shareddb import testcases

class MyTests(testcases.LiveServerTestCase):
def test_something(self):
# Your test here

The django-shareddb ``LiveServerTestCase`` is simply a clone of Django's version,
but uses ``django.test.TestCase`` instead of ``django.test.TransactionTestCase``.


* The code of this project is available on GitHub:
* It is available on PyPI:
* Issues, questions, and new features should be opened on GitHub:


This libraries has been succesfully tested with sqlite and postgresql.

If you want to test it with other databases, please clone it and alter
``dev/`` for your setup, then run ``./ test``.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for django-shareddb, version 0.1.2
Filename, size File type Python version Upload date Hashes
Filename, size django-shareddb-0.1.2.tar.gz (8.6 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page