Redshift database backend for Django
Project description
This product is tested with:
python-2.7, 3.4, 3.5
django-1.7, 1.8, 1.9, 1.10
Differences from postgres_psycopg2 backend
Type mapping:
‘integer identity(1, 1)’ for AutoField
‘bigint identity(1, 1)’ for BigAutoField
‘timestamp’ for DateTimeField
‘varchar(max)’ for TextField
Possibility to multiply VARCHAR length to support utf-8 string, using REDSHIFT_VARCHAR_LENGTH_MULTIPLIER setting.
Stop using:
RETURNING (single insert and bulk insert)
SELECT FOR UPDATE
SET TIME ZONE
SET CONSTRAINTS
INDEX
DEFERRABLE INITIALLY DEFERRED
CONSTRAINT
DROP DEFAULT
To support migration:
To add column to existent table on Redshift, column must be nullable
To support modify column, add new column -> data migration -> drop old column -> rename
Please note that the migration support for redshift is not perfect yet.
Note and Limitation
Amazon Redshift doesn’t support RETURNING, so last_insert_id method retrieve MAX(pk) after insertion as a workaround.
refs:
In some case, MAX(pk) workaround does not work correctly. Bulk insertion makes non-contiguous IDs like: 1, 4, 7, 10, … and single insertion after such bulk insertion generates strange id value like 2 (smallest non-used id).
SETTINGS
ENGINE for DATABASES is ‘django_redshift_backend’. You can set the name in your settings.py as:
DATABASES = { 'default': { 'ENGINE': 'django_redshift_backend', 'NAME': '<your database name>', 'USER': '<your database username>', 'PASSWORD': '<your database password>', 'HOST': '<your database hostname>', 'PORT': '5439', } }
- REDSHIFT_VARCHAR_LENGTH_MULTIPLIER:
Possibility to multiply VARCHAR length to support utf-8 string. Default is 1.
TESTING
Testing this package requires:
tox-1.8 or later
virtualenv-15.0.1 or later
pip-8.1.1 or later
and wheelhouse directory contains psycopg2 manylinux1 wheels for using in each tests.
LICENSE
Apache Software License
CHANGES
0.6 (2016-12-15)
Fix crush problem when using bulk insert.
0.5 (2016-10-05)
Support Django-1.10
#9: Add support for BigAutoField. Thanks to Maxime Vdb.
Fix crush problem on sqlmigrate when field modified.
0.4 (2016-05-17)
Support Python-3.4 and 3.5
#7: Restore support django-1.7. Version 0.3 doesn’t support django-1.7.
#4: More compat with redshift: not use SET CONSTRAINTS. Thanks to Maxime Vdb.
#6: More compat with redshift: not use sequence reset query. Thanks to Maxime Vdb.
#5: Add REDSHIFT_VARCHAR_LENGTH_MULTIPLIER settings. Thanks to Maxime Vdb.
Support column type changing on migration.
0.3 (2016-05-14)
#3: more compat with Redshift (AutoField, DateTimeField, Index). Thanks to Maxime Vdb.
More compat with redshift: add TextField
More compat with redshift: not use DEFERRABLE, CONSTRAINT, DROP DEFAULT
More compat with redshift: support modify column
0.2.1 (2016-02-01)
“SET TIME_ZONE” warning is changed as debug log for ‘django.db.backend’ logger.
0.2 (2016-01-08)
Disable “SET TIME_ZONE” SQL execution even if settings.TIME_ZONE is specified.
0.1.2 (2015-06-5)
Support Django-1.8
0.1.1 (2015-03-27)
Disable “SELECT FOR UPDATE” SQL execution.
0.1 (2015-03-24)
Support Django-1.7
Support “INSERT INTO” SQL execution without “RETURNING” clause.
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
Hashes for django-redshift-backend-0.6.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 96ccdda8535feb550042c16a12043bbdd75a2e2a1193d8444563077fc05ae58b |
|
MD5 | fe4da6d162ed4e04adb30d4fb27abcbe |
|
BLAKE2b-256 | b39edca1061123647258708f8120466983107c1381b83e7435bcdc0c44d55b1a |
Hashes for django_redshift_backend-0.6-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 248ca77573b31ad23763124960211a2620fe689f0a000d11aabc1c827018398b |
|
MD5 | c56d9f935231aea94c4a242c4e004692 |
|
BLAKE2b-256 | dcf069f0c263a2ca22004d55effe0328cb23f77fb12ee6bb92c8fb728940184f |