This is a grid of non-relational database backends.
Feature | Description |
---|---|
regex | |
Unsupported field options | These field options are ignored |
Extra field types | Other field types which are supported (either from djangotoolbox.fields or provided by the backend itself) |
Unsupported Meta options | All "class Meta" options are supported except for these |
isnull | |
iexact | |
istartswith | |
icontains | |
iregex | |
iendswith | |
year | |
month | |
day | |
endswith | |
exact | |
in | |
contains | |
gte | |
gt | |
startswith | |
range | |
lt | |
lte | |
Unsupported Django fields | All Django fields except for these are supported |
week_day | |
Multi-table inheritance | |
Transactions | |
QuerySet.in_bulk() | |
QuerySet.exists() | |
QuerySet.get_or_create() | |
QuerySet.create() | |
QuerySet.get() | |
QuerySet.defer()/only() | |
QuerySet.count() | |
QuerySet.extra() | |
QuerySet.select_related() | |
QuerySet.values_list() | |
QuerySet.values() | |
search | |
QuerySet.annotate() | |
Variance | |
StdDev | |
QuerySet.dates() | |
Avg | |
QuerySet.order_by() | |
Max | |
Min | |
Count | |
Sum | |
QuerySet.exclude() | |
OR queries | Are Q(...) | Q(...) queries supported? |
QuerySet.latest() | |
QuerySet.distinct() | |
QuerySet.reverse() | |
Unsupported native DB features | |
JOINs | |
QuerySet.update() | |
QuerySet.bulk_create() | |
QuerySet.delete() | |
QuerySet.in_bulk() | |
Admin interface support | Can the backend be used with the admin interface? |
second | |
minute | |
hour | |
Unsupported native field/data types | Which DB-specific field/data types have no alternative in Django |
Package | django-storages | djongo | Django-nonrel MongoDB Engine | neo4django | Couchdbkit | Django ElasticSearch Engine | djangoappengine | htsql | moma-django: Django ORM for MongoDB. | django-dockit | django-docfield-couchdb |
---|---|---|---|---|---|---|---|---|---|---|---|
Description | https://django-storages.readthedocs.io/ |
Django and MongoDB database connector | Django MongoDB Backend |
Drop-in Neo4j/Django integration. | CouchDB python framework | Django ElasticSearch Backend |
Django backends for App Engine support. |
HTSQL is a comprehensive navigational query language for relational databases. HTSQL is designed for data analysts and other accidental programmers ... |
MongoDB Manager for Django: providing native Django ORM support for Mongo DB. |
Provides a document based ORM suite modelled after Django's own conventions. |
Django fields that encapsulate docs and other idioms from a live CouchDB instance. |
Category | App | Other | Other | Framework | App | Other | App | Other | App | Framework | App |
# Using This | 46![]() | 6![]() | 14![]() | 5![]() | 1![]() | 2![]() | 11![]() | 3![]() | 1![]() | 0![]() | 1![]() |
Python 3? | |||||||||||
Development Status | Production/Stable | Alpha | Production/Stable | Alpha | Beta | n/a | n/a | Beta | Beta | Alpha | Production/Stable |
Last updated | Dec. 23, 2020, 7:35 p.m. | March 25, 2021, 2:55 a.m. | July 12, 2015, 1:25 p.m. | July 3, 2014, 12:12 p.m. | Oct. 16, 2015, 1:31 a.m. | Sept. 2, 2011, 5:46 p.m. | Nov. 10, 2011, 8:05 p.m. | March 11, 2019, 5:10 p.m. | March 13, 2014, 11:09 a.m. | April 11, 2013, 2:32 p.m. | Feb. 8, 2014, 5:31 p.m. |
Version | 1.11.1 | 1.3.4 | 0.6.0 | 0.1.8 | 0.6.5 | n/a | n/a | 2.3.3 | 0.1.1 | 0.0.13 | 0.2.4 |
Repo | Github | Github | Github | Github | Github | Github | Bitbucket | Bitbucket | Github | Github | Github |
Commits | |||||||||||
Stars | 1883 | 1263 | 858 | 351 | 264 | 142 | 110 | 52 | 35 | 28 | 7 |
Repo Forks | 696 | 240 | 216 | 81 | 92 | 30 | 26 | 17 | 6 | 8 | 1 |
Participants | jschneier jdufresne davidbgk richleland sww314 ianlewis jezdez scjody SmileyChris ZuluPro more... | nesdis jay20162016 lesantana09 Raznak mishrag WoLpH rudolfce tony13tv finderseyes frostming more... | jonashaag flaper87 wrwrwr aburgel charettes emperorcezar r4fek Alir3z4 bpedman key more... | mhluongo wcbeard shaunduncan pirhoo tonjo necaris doismellburning lutoma coffenbacher robinedwards more... | benoitc dannyroberts RonnyPfannschmidt stefankoegl douglatornell b3no mario wendall911 georgemarshall taxilian more... | flaper87 | wkornewald | prometheus | gadio | zbyte64 msabramo kmooney nikolajbaer | fish2000 bitdeli-chef |
Documentation | N/A | N/A | N/A | N/A | |||||||
regex | (more efficient with django-dbindexer) | predefined regexes with django-dbindexer | |||||||||
Unsupported field options | unique unique_for_date/_month/_year db_tablespace | unique_for_date/_month/_year db_tablespace db_index primary_key (Neo4j only allows a default primary id) | unique unique_for_date/_month/_year db_tablespace db_index (a more flexible alternative is available) | unique unique_for_date/_month/_year db_tablespace db_index (a more flexible alternative is available) | |||||||
Extra field types | in djangotoolbox.fields: ListField DictField SetField RawField custom fields: GridFSField | ArrayProperty StringArrayProperty IntArrayProperty URLArrayProperty | ListField DictField | in djangotoolbox.fields: ListField DictField SetField RawField BlobField | ListField DictField SchemaField | ||||||
Unsupported Meta options | db_tablespace | db_tablespace unique_together | db_tablespace unique_together | db_tablespace unique_together | |||||||
isnull | (needs django-dbindexer for ForeignKey) | (needs django-dbindexer for ForeignKey) | |||||||||
iexact | (more efficient with django-dbindexer) | with django-dbindexer | |||||||||
istartswith | (more efficient with django-dbindexer) | with django-dbindexer | |||||||||
icontains | (more efficient with django-dbindexer) | with django-dbindexer | |||||||||
iregex | (more efficient with django-dbindexer) | predefined regexes with django-dbindexer | |||||||||
iendswith | (more efficient with django-dbindexer) | with django-dbindexer | |||||||||
year | |||||||||||
month | with django-dbindexer | with django-dbindexer | |||||||||
day | with django-dbindexer | with django-dbindexer | |||||||||
endswith | (more efficient with django-dbindexer) | with django-dbindexer | |||||||||
exact | |||||||||||
in | limited to 30 comparisons on non-pks | ||||||||||
contains | (more efficient with django-dbindexer) | with django-dbindexer | |||||||||
gte | |||||||||||
gt | |||||||||||
startswith | |||||||||||
range | |||||||||||
lt | |||||||||||
lte | |||||||||||
Unsupported Django fields | ManyToManyField | None of the original Django fields are supported, and are instead replaced by fields provided by the package. | ImageField ManyToManyField | ImageField ManyToManyField | |||||||
week_day | with django-dbindexer | with django-dbindexer | |||||||||
Multi-table inheritance | (needs JOINs) | (needs JOINs) | (needs JOINs) | ||||||||
Transactions | (MongoDB doesn't have transactions) | (working on it) | (but App Engine's run_in_transaction() works) | ||||||||
QuerySet.in_bulk() | |||||||||||
QuerySet.exists() | |||||||||||
QuerySet.get_or_create() | |||||||||||
QuerySet.create() | |||||||||||
QuerySet.get() | |||||||||||
QuerySet.defer()/only() | (planned) | (same constraints as QuerySet.values()) | |||||||||
QuerySet.count() | |||||||||||
QuerySet.extra() | (SQL-specific) | (SQL-specific) | (SQL Specific) | (SQL-specific) | |||||||
QuerySet.select_related() | |||||||||||
QuerySet.values_list() | (same constraints as QuerySet.values()) | ||||||||||
QuerySet.values() | (only efficient on pk, otherwise all values are fetched internally and unneeded ones are thrown away) | ||||||||||
search | (planned) | ||||||||||
QuerySet.annotate() | |||||||||||
Variance | (planned) | ||||||||||
StdDev | (planned) | ||||||||||
QuerySet.dates() | |||||||||||
Avg | |||||||||||
QuerySet.order_by() | |||||||||||
Max | |||||||||||
Min | |||||||||||
Count | |||||||||||
Sum | |||||||||||
QuerySet.exclude() | (only with OR queries) | (only with OR queries) | |||||||||
OR queries | (only with QuerySet.exclude()) | ||||||||||
QuerySet.latest() | |||||||||||
QuerySet.distinct() | |||||||||||
QuerySet.reverse() | |||||||||||
Unsupported native DB features | Missing in QuerySet.update(): * $push/$pushAll, $pull/$pullAll for adding/removing entries from a ListField * $addToSet to add an entry to ListField only if it doesn't exist * $pop for removing last or first element from ListField | More general method for traversals (currently supported by select_related()). | Not yet implemented: Cursors Entity groups Batch-save() | ||||||||
JOINs | (using traversals + indexing, since graph databases don't have tables) | via django-dbindexer (simple JOINs) | |||||||||
QuerySet.update() | |||||||||||
QuerySet.bulk_create() | |||||||||||
QuerySet.delete() | |||||||||||
QuerySet.in_bulk() | |||||||||||
Admin interface support | |||||||||||
second | |||||||||||
minute | |||||||||||
hour | |||||||||||
Unsupported native field/data types | Not yet implemented: Primary key for entity groups ByteStringProperty UserProperty GeoPtProperty |
Search Weight | Package | Description | Last PyPI release: | Repo Forks | Stars | |||
---|---|---|---|---|---|---|---|---|
{{ item.weight / max_weight * 100 | number:0 }}% | {{ item.title }} | Grid: {{ item.description }} | {{ item.last_released | date: 'mediumDate' }} | N/A | {{ item.repo_forks }} | N/A | {{ item.repo_watchers }} | N/A |