diff --git a/README.rst b/README.rst index a9cf2aa..4440149 100644 --- a/README.rst +++ b/README.rst @@ -76,6 +76,8 @@ URL schema +-------------+-----------------------------------------------+--------------------------------------------------+ | Redshift | ``django_redshift_backend`` | ``redshift://USER:PASSWORD@HOST:PORT/NAME`` | +-------------+-----------------------------------------------+--------------------------------------------------+ +| CockroachDB | ``django_cockroachdb`` | ``cockroach://USER:PASSWORD@HOST:PORT/NAME`` | ++-------------+-----------------------------------------------+--------------------------------------------------+ .. [1] The django.db.backends.postgresql backend is named django.db.backends.postgresql_psycopg2 in older releases. For backwards compatibility, the old name still works in newer versions. (The new name does not work in older versions). diff --git a/dj_database_url.py b/dj_database_url.py index 2c3626c..c3ec891 100644 --- a/dj_database_url.py +++ b/dj_database_url.py @@ -28,6 +28,7 @@ urlparse.uses_netloc.append('sqlite') urlparse.uses_netloc.append('oracle') urlparse.uses_netloc.append('oraclegis') urlparse.uses_netloc.append('redshift') +urlparse.uses_netloc.append('cockroach') DEFAULT_ENV = 'DATABASE_URL' @@ -43,6 +44,7 @@ SCHEMES = { 'oracle': 'django.db.backends.oracle', 'oraclegis': 'django.contrib.gis.db.backends.oracle', 'redshift': 'django_redshift_backend', + 'cockroach': 'django_cockroachdb' } # https://docs.djangoproject.com/en/2.0/releases/2.0/#id1 diff --git a/test_dj_database_url.py b/test_dj_database_url.py index b869019..3bab378 100644 --- a/test_dj_database_url.py +++ b/test_dj_database_url.py @@ -336,6 +336,20 @@ class DatabaseTestSuite(unittest.TestCase): assert url['OPTIONS']['driver'] == 'ODBC Driver 13 for SQL Server' assert 'currentSchema' not in url['OPTIONS'] + def test_cockroach(self): + url = "cockroach://testuser:testpass@testhost:26257/cockroach?sslmode=verify-full&sslrootcert=/certs/ca.crt&sslcert=/certs/client.myprojectuser.crt&sslkey=/certs/client.myprojectuser.key" + url = dj_database_url.parse(url) + assert url['ENGINE'] == 'django_cockroachdb' + assert url['NAME'] == 'cockroach' + assert url['HOST'] == 'testhost' + assert url['USER'] == 'testuser' + assert url['PASSWORD'] == 'testpass' + assert url['PORT'] == 26257 + assert url['OPTIONS']['sslmode'] == 'verify-full' + assert url['OPTIONS']['sslrootcert'] == '/certs/ca.crt' + assert url['OPTIONS']['sslcert'] == '/certs/client.myprojectuser.crt' + assert url['OPTIONS']['sslkey'] == '/certs/client.myprojectuser.key' + if __name__ == '__main__': unittest.main()