Add support for CockroachDB

This commit is contained in:
Tom Parker-Shemilt 2021-06-07 22:50:57 +01:00
parent 1937ed9e61
commit 78d225c069
3 changed files with 18 additions and 0 deletions

View file

@ -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).

View file

@ -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

View file

@ -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()