diff --git a/README.rst b/README.rst index 933a8ac..9187dd9 100644 --- a/README.rst +++ b/README.rst @@ -26,7 +26,7 @@ Supported Databases ------------------- Support currently exists for PostgreSQL, PostGIS, MySQL, MySQL (GIS), -Oracle, Oracle (GIS), Redshift, and SQLite. +Oracle, Oracle (GIS), Redshift, CockroachDB, and SQLite. Installation ------------ @@ -83,6 +83,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 0fa8797..9bd7661 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 2b1c14c..b8accfd 100644 --- a/test_dj_database_url.py +++ b/test_dj_database_url.py @@ -341,6 +341,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()