From d1139e3e71791352e270da699ba35ee5509265b6 Mon Sep 17 00:00:00 2001 From: makoto tsuyuki Date: Tue, 25 Oct 2016 17:25:01 +0900 Subject: [PATCH] add redshift support --- README.rst | 4 +++- dj_database_url.py | 2 ++ test_dj_database_url.py | 12 ++++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/README.rst b/README.rst index f13c1cf..a485b1e 100644 --- a/README.rst +++ b/README.rst @@ -19,7 +19,7 @@ Supported Databases ------------------- Support currently exists for PostgreSQL, PostGIS, MySQL, MySQL (GIS), -Oracle, Oracle (GIS), and SQLite. +Oracle, Oracle (GIS), Redshift, and SQLite. Installation ------------ @@ -72,6 +72,8 @@ URL schema +-------------+-----------------------------------------------+--------------------------------------------------+ | Oracle (GIS)| ``django.contrib.gis.db.backends.oracle`` | ``oraclegis://USER:PASSWORD@HOST:PORT/NAME`` | +-------------+-----------------------------------------------+--------------------------------------------------+ +| Redshift | ``django_redshift_backend`` | ``redshift://USER:PASSWORD@HOST:PORT/NAME`` | ++-------------+-----------------------------------------------+--------------------------------------------------+ .. [1] With PostgreSQL, you can also use unix domain socket paths with `percent encoding `_: diff --git a/dj_database_url.py b/dj_database_url.py index 2fbe4b8..d5c3efc 100644 --- a/dj_database_url.py +++ b/dj_database_url.py @@ -21,6 +21,7 @@ urlparse.uses_netloc.append('spatialite') urlparse.uses_netloc.append('sqlite') urlparse.uses_netloc.append('oracle') urlparse.uses_netloc.append('oraclegis') +urlparse.uses_netloc.append('redshift') DEFAULT_ENV = 'DATABASE_URL' @@ -37,6 +38,7 @@ SCHEMES = { 'sqlite': 'django.db.backends.sqlite3', 'oracle': 'django.db.backends.oracle', 'oraclegis': 'django.contrib.gis.db.backends.oracle', + 'redshift': 'django_redshift_backend', } diff --git a/test_dj_database_url.py b/test_dj_database_url.py index e57232d..7bba839 100644 --- a/test_dj_database_url.py +++ b/test_dj_database_url.py @@ -257,6 +257,18 @@ class DatabaseTestSuite(unittest.TestCase): assert url['HOST'] == '' assert url['PORT'] == '' + def test_redshift_parsing(self): + url = 'redshift://uf07k1i6d8ia0v:wegauwhgeuioweg@ec2-107-21-253-135.compute-1.amazonaws.com:5439/d8r82722r2kuvn' + url = dj_database_url.parse(url) + + assert url['ENGINE'] == 'django_redshift_backend' + assert url['NAME'] == 'd8r82722r2kuvn' + assert url['HOST'] == 'ec2-107-21-253-135.compute-1.amazonaws.com' + assert url['USER'] == 'uf07k1i6d8ia0v' + assert url['PASSWORD'] == 'wegauwhgeuioweg' + assert url['PORT'] == 5439 + + if __name__ == '__main__': unittest.main()