Short Answer

Postgresql is best database for django as said in official documentation. If you are interested in why, then you should read further.

What is django?

Firstly, Django is a free and open-source framework written in Python for developing web applications, and to do it faster and easier, because it already comes with certain applications like user authorization and email sending which you can easily plug into your existing application. It follows the Don’t Repeat Yourself (DRY) principle, so you don’t need to rewrite existing code. On top of that, it has a powerful template (files with HTML code used to render data) engine and its own markup language. Django is especially useful for database-driven websites because of its Model-View-Template (MVT), and there’s hardly any application without a database.

The MVT allows developers to change the visual part of an app without affecting the business part of the logic, and vice versa.

Django officially supports the following databases:

Which is the best database for django?

Among these the best-suited database is PostgreSQL. Django supports PostgreSQL 9.5 and higher. psycopg2 2.5.4 or higher is required, though the latest release is recommended.

PostgreSQL is a free and open-source relational database management system (RDBMS). An RDBMS organizes data in tables of rows and columns (non-relational databases store data in non-tabular forms, whatever they may be). Like many other RDBMSs, PostgreSQL uses structured query language (SQL) to manage and query data. Three of the most widely implemented open-source RDBMSs are SQLite, MySQL, and PostgreSQL. When a web application is set up using Django, an SQLite database is automatically set up for the backend of the application. However, we can customize it to use another RDBMS.

Advantages of PostgreSQL

Data Types: All needed data types are supported in PostgreSQL like a Primitives (integer, numeric, string, boolean, etc), Structured (date/time, timestamp, interval, array, range, UUID, enum, etc), Documents (JSON, XML, Hstore, etc), Geometry (point, line, circle, polygon, etc) and Customized Types defined by you.

Data Integrity: The best-needed constraints are supported in PostgreSQL like UNIQUE, NOT NULL, Primary Keys, Foreign Keys, and Exclusions. You can use Explicit Locking (full ACID supported), Advisory Locks. Concentrate all of your business rules into the databases.

Concurrency and Performance: Some powerful types of basic/advanced indexing methods like B-tree, Multicolumn, Expressions, Partial, GiST, SPGist, KNN Gist, GIN, BRIN, Bloom filters. Take the best of a sophisticated query planner/optimizer. Use index-only scans and multi-column statistics. You can do the best with Transactions, Nested Transactions (via savepoints), Multi-Version Concurrency Control (MVCC), Parallelization of reading queries, and Declarative Table partitioning.

Reliability, Disaster Recovery: PostgreSQL has a Write-ahead Logging (WAL) to provide data assurance. He never loses data by yourself. Replicate your data using Master/Slave Native Replication. The replication can be Asynchronous, Synchronous, Logical (providing Publication / Subscription resources). You can do a Point-in-time recovery (PITR) or use active standbys. Finally, distribute data between storages using Tablespaces.

Security: About security, you can use Authentication methods like GSSAPI, SSPI, LDAP, SCRAM-SHA-256, Certificate, and more. PostgreSQL has SSL encryption native support on traffic data, between Client and Databases. Your data is always protected by a man in the middle attacks. You can use a robust access control system, in tables, objects, columns, and at row-level too.

Extensibility: Use stored procedures, functions in procedural languages like PL/PGSQL, Perl, Python (and many more). Connect, Read, and Write data from other databases or streams with a standard SQL interface using Foreign data wrappers. Use many extensions that provide additional functionality, including PostGIS.

For more information on postgresql with django read their docs.