# Documentation Django 3.1.9.dev

# Intégration de Django avec une base de données existante

Même si Django est plus approprié pour le développement de nouvelles applications, il est tout à fait possible d’intégrer des bases de données existantes. Django contient quelques utilitaires pour automatiser le plus possible ce processus.

Ce document part du principe que vous connaissez les bases de Django, telles que présentées dans le tutoriel.

Après avoir configuré Django, voici le processus général à suivre pour intégrer une base de données existante.

## Indication des paramètres de la base de données

Il est nécessaire d’indiquer à Django les paramètres de connexion à la base de données, ainsi que son nom. Faites-le en modifiant le réglage `DATABASES` et en attribuant des valeurs aux clés suivantes de la connexion `'default'`:

- `NAME`
- `ENGINE`
- `USER`
- `PASSWORD`
- `HOST`
- `PORT`

## Génération automatique des modèles

Django propose un utilitaire nommé `inspectdb` qui sait comment créer des modèles en introspectant une base de données existante. Vous pouvez visualiser le résultat en lançant cette commande :

    $ python manage.py inspectdb

Enregistrez ce résultat dans un fichier en utilisant la redirection de sortie standard Unix :

    $ python manage.py inspectdb > models.py

Cette fonctionnalité s’apparente à un raccourci, pas comme une génération définitive des modèles. Consultez la `documentation de inspectdb` pour plus d’informations.

Après avoir nettoyé vos modèles, nommez ce fichier `models.py` et placez-le dans le paquet Python qui contient votre application. Puis ajoutez l’application à votre réglage `INSTALLED_APPS`.

Par défaut, `inspectdb` crée des modèles non pilotés. C’est-à-dire que la présence de `managed = False` dans la classe `Meta` des modèles indique à Django de ne pas piloter la création de la table correspondante, ni sa modification ou sa destruction :

    class Person(models.Model):
        id = models.IntegerField(primary_key=True)
        first_name = models.CharField(max_length=70)
        class Meta:
           managed = False
           db_table = 'CENSUS_PERSONS'

Si vous voulez autoriser Django à piloter le cycle de vie des tables, il est nécessaire de modifier l’option `managed` mise en évidence ci-dessus pour lui donner la valeur `True` (ou carrément l’enlever, car `True` est sa valeur par défaut).

## Installation des tables principales de Django

Ensuite, lancez la commande `migrate` pour installer les enregistrements de base de données supplémentaires, comme les permissions d’administration et les types de contenus :

    $ python manage.py migrate

## Tests et ajustements

Nous vous avons présenté les étapes de base ; à partir de là, vous allez devoir ajuster les modèles Django générés pour qu’ils se conforment à vos attentes. Essayez d’accéder à vos données par le moyen de l’API de base de données de Django et essayez de modifier les objets par le site d’administration de Django ; adaptez le fichier des modèles en conséquence.