== Bases de données

On l'a déjà vu, Django se base sur un pattern type https://www.martinfowler.com/eaaCatalog/activeRecord.html[ActiveRecords] pour la gestion de la persistance des données et supporte les principaux moteurs de bases de données connus: 

* SQLite (en natif, mais Django 3.0 exige une version du moteur supérieure ou égale à la 3.8)
* MariaDB (en natif depuis Django 3.0), 
* PostgreSQL au travers de psycopg2 (en natif aussi), 
* Microsoft SQLServer grâce aux drivers [...à compléter] 
* Oracle via https://oracle.github.io/python-cx_Oracle/[cx_Oracle]. 

CAUTION: Chaque pilote doit être utilisé précautionneusement ! Chaque version de Django n'est pas toujours compatible avec chacune des versions des pilotes, et chaque moteur de base de données nécessite parfois une version spécifique du pilote. Par ce fait, vous serez parfois bloqué sur une version de Django, simplement parce que votre serveur de base de données se trouvera dans une version spécifique (eg. Django 2.3 à cause d'un Oracle 12.1).

Ci-dessous, quelques procédures d'installation pour mettre un serveur à disposition. Les deux plus simples seront MariaDB et PostgreSQL, qu'on couvrira ci-dessous. Oracle et Microsoft SQLServer se trouveront en annexes.

=== PostgreSQL

On commence par installer PostgreSQL.

Par exemple, dans le cas de debian, on exécute la commande suivante:

[source,bash]
----
$$$ aptitude install postgresql postgresql-contrib
----
    
Ensuite, on crée un utilisateur pour la DB:

[source,bash]
----
$$$ su - postgres
postgres@gwift:~$ createuser --interactive -P
Enter name of role to add: gwift_user  
Enter password for new role: 
Enter it again: 
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
postgres@gwift:~$
----
    
Finalement, on peut créer la DB:

[source,bash]
----    
postgres@gwift:~$ createdb --owner gwift_user gwift
postgres@gwift:~$ exit
logout
$$$
----

NOTE: penser à inclure un bidule pour les backups.

=== MariaDB

Idem, installation, configuration, backup, tout ça.
A copier de grimboite, je suis sûr d'avoir des notes là-dessus.


=== Microsoft SQL Server


=== Oracle

