Django backend for CockroachDB
Project description
CockroachDB backend for Django
Install and usage
Use the version of django-cockroachdb that corresponds to your version of Django. For example, to get the latest compatible release for Django 2.2.x:
pip install django-cockroachdb==2.2.*
The minor release number of Django doesn't correspond to the minor release number of django-cockroachdb. Use the latest minor release of each.
If a release series of django-cockroachdb only has pre-releases (alphas or betas), you'll see an error with a list of the available versions. In that case, specify the exact version that you want. For example, if django-cockroachdb 2.2 alpha 1 is available:
$ pip install django-cockroachdb==2.2.*`
ERROR: Could not find a version that satisfies the requirement
django-cockroachdb==2.2.* (from versions: 2.2a1)
$ pip install django-cockroachdb==2.2a1
...
Successfully installed django-cockroachdb-2.2a1 psycopg2-2.8.4
Configure the Django DATABASES
setting similar to this:
DATABASES = {
'default': {
'ENGINE': 'django_cockroachdb',
'NAME': 'django',
'USER': 'root',
'PASSWORD': '',
'HOST': 'localhost',
'PORT': '26257',
# If connecting with SSL, remove the PASSWORD entry above and include
# the section below, replacing the file paths as appropriate.
'OPTIONS': {
'sslmode': 'require',
'sslrootcert': '/certs/ca.crt',
'sslcert': '/certs/client.myprojectuser.crt',
'sslkey': '/certs/client.myprojectuser.key',
},
},
}
Notes on Django fields
-
CharField
'smax_length
is ignored. It uses the same storage asTextField
soCharField
is introspected byinspectdb
asTextField
. -
IntegerField
uses the same storage asBigIntegerField
soIntegerField
is introspected byinspectdb
asBigIntegerField
. -
AutoField
andBigAutoField
are both stored as integer (64-bit) withDEFAULT unique_rowid()
.
FAQ
Why do I get the error psycopg2.errors.InvalidName: no database specified
?
You may need to create the database.
You can use cockroach sql --insecure
on the command line to get a SQL prompt.
Known issues and limitations (as of cockroachdb 19.2.2)
-
CockroachDB doesn't support savepoints. This means a few things:
- Django's transaction.atomic() can't be nested.
- Django's
TestCase
works likeTransactionTestCase
. That is, transactions aren't used to speed up the former.
-
CockroachDB can't disable constraint checking, which means certain things in Django like forward references in fixtures aren't supported.
-
Migrations have some limitations. CockroachDB doesn't support:
- changing column type
- dropping or changing a table's primary key
-
Known Bugs:
- The extract() function doesn't respect the time zone.
- Interval math across daylight saving time is incorrect.
date_trunc('week', <value>)
truncates to midnight Sunday rather than Monday- date_trunc() results are incorrectly localized.
- cast() timestamptz to time doesn't respect the time zone.
- Interval math may be incorrect on date columns.
-
Unsupported queries:
- Mixed type addition in SELECT:
unsupported binary operator: <int> + <float>
- UPDATE float column with integer column:
value type int doesn't match type FLOAT8 of column <name>
- Division that yields a different type:
unsupported binary operator: <int> / <int> (desired <int>)
- The power() database function doesn't accept negative exponents:
power(): integer out of range
- The
StdDev
andVariance
aggregates aren't supported. - extract() doesn't support interval columns (DurationField):
unknown signature: extract(string, interval)
- The log() function doesn't support custom bases:
unknown signature: extract(string, interval)
- sum() doesn't support arguments of different types:
sum(): unsupported binary operator: <float> + <int>
- greatest() doesn't support arguments of different types:
greatest(): expected <arg> to be of type <type>, found type <other type>
- The isoyear lookup isn't supported:
extract(): unsupported timespan: isoyear
- timezone() doesn't support UTC offsets:
timezone(): unknown time zone UTC...
- Mixed type addition in SELECT:
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_cockroachdb-2.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 274ba5b77e88c062892c98842f2cc4eb27a167b902793b6bcd0d881a285e7e32 |
|
MD5 | b89f604b7040171a8764d839eccca339 |
|
BLAKE2b-256 | a0b65e4349e06dc6c55e6657554d5d9d95cd2082829088f7452ceb77c4b676ba |