/django_pg8000

A django database backend for pg8000

Primary LanguagePythonMIT No AttributionMIT-0

Django pg8000

A Django database backend for the pg8000 driver for PostgreSQL.

Workflow Status Badge

Installation And Usage

Install with: pip install django_pg8000

Set the Django DATABASES to something like:

DATABASES = {
    "default": {
        "ENGINE": "django_pg8000",
        "HOST": "localhost",
        "PORT": 5432,
        "NAME": "django",
        "USER": "postgres",
        "OPTIONS": {},
    },
}

Contributing

At the moment Django pg8000 doesn't pass all of the tests, so if you'd like to contribute, please send a Pull Request that fixes a particular test.

Testing

  • git clone https://github.com/django/django.git
  • cd tests
  • python -m pip install -e ..
  • python -m pip install -r requirements/py3.txt
  • ./runtests.py databases

This will run the standard tests against the SQLite backend.

Create a file at django/django/conf/test_pg8000.py:

DATABASES = {
    "default": {
        "ENGINE": "django_pg8000",
        "HOST": "localhost",
        "PORT": 5432,
        "NAME": "django",
        "USER": "postgres",
        "OPTIONS": {},
    },
    "other": {
        "ENGINE": "django_pg8000",
        "HOST": "localhost",
        "PORT": 5432,
        "NAME": "django_other",
        "USER": "postgres",
        "OPTIONS": {},
    },
}

SECRET_KEY = "django_tests_secret_key"

# Use a fast hasher to speed up tests.
PASSWORD_HASHERS = [
    "django.contrib.auth.hashers.MD5PasswordHasher",
]

DEFAULT_AUTO_FIELD = "django.db.models.AutoField"

USE_TZ = False

Then run ./runtests.py --failfast --parallel=1 --exclude-tag=psycopg_specific --settings=django.conf.test_pg8000

Some tests in the Django suite are specific to the pyscopg driver, so these can be marked with the psycopg_specific tag.

If tests fail then you may need to drop the databases that are left hanging around by doing something like: psql --username=postgres -c "DROP DATABASE IF EXISTS test_django;" -c "DROP DATABASE IF EXISTS test_django_other;"

Doing A Release Of Django pg8000

  • git tag -a x.y.z -m "version x.y.z"
  • rm -r dist
  • python -m build
  • twine upload dist/*

Release Notes

Version 0.0.5

  • Now requires pg8000 1.30.4 or higher

Version 0.0.4

  • Various bug fixes, so a few more tests are passed.

Version 0.0.3

  • Rather than using the vendor 'postgresql', use 'postgresql_pg8000'. Otherwise Django assumes that psycopg is installed.

Version 0.0.2

  • Add GitHub Actions tests

Version 0.0.1

  • Initial release.