Article original : How to Use PostgreSQL in Django

Si vous construisez un projet Django et que vous vous demandez quelle base de données utiliser, PostgreSQL est un excellent choix. Il est fiable, rapide, rempli de fonctionnalités puissantes et fonctionne parfaitement avec Django.

Je l'ai utilisé dans plusieurs projets - des petites applications web aux plateformes à grande échelle - et il ne m'a jamais déçu.

Dans cet article, je vais vous guider étape par étape pour connecter PostgreSQL avec Django.

Commençons.

Ce que nous allons couvrir :

  1. Pourquoi utiliser PostgreSQL avec Django ?

  2. Ce dont vous aurez besoin

  3. Comment utiliser PostgreSQL dans Django

  4. Problèmes courants (et solutions)

  5. Optionnel : Utiliser dj-database-url pour de meilleurs paramètres

  6. Questions fréquemment posées

  7. Conclusion

  8. Ressources supplémentaires

Pourquoi utiliser PostgreSQL avec Django ?

PostgreSQL est une base de données relationnelle open-source populaire, connue pour ses performances, sa flexibilité et ses fonctionnalités puissantes telles que :

  • Types de données avancés (JSON, tableaux, etc.)

  • Recherche en texte intégral

  • Prise en charge des requêtes complexes

  • Intégrité et fiabilité des données

Django recommande officiellement PostgreSQL comme le backend de base de données le plus complet qu'il supporte. Si vous prévoyez de construire une application web sérieuse, PostgreSQL est généralement la meilleure base de données à associer avec Django.

Ce dont vous aurez besoin

Avant de commencer, assurez-vous d'avoir ce qui suit :

  • Python installé (3.7 ou supérieur est préférable)

  • Django installé (j'utiliserai la version 4.x)

  • PostgreSQL installé et en cours d'exécution

  • psycopg2 ou psycopg2-binary (c'est l'adaptateur qui permet à Django de communiquer avec PostgreSQL)

Comment utiliser PostgreSQL dans Django

Voici comment commencer :

Étape 1 : Installer PostgreSQL

Si vous n'avez pas encore installé PostgreSQL, vous pouvez le télécharger depuis le site officiel de PostgreSQL. Il fonctionne sur Windows, macOS et Linux.

Assurez-vous de vous souvenir du nom d'utilisateur, du mot de passe et du nom de la base de données lorsque vous le configurez - vous en aurez besoin plus tard.

Étape 2 : Installer l'adaptateur PostgreSQL pour Python

Django a besoin d'un peu d'aide pour se connecter à PostgreSQL. C'est là que psycopg2 intervient.

Vous pouvez l'installer en utilisant pip :

pip install psycopg2-binary

Astuce : La version -binary est plus facile à installer et fonctionne pour la plupart des gens. Si vous rencontrez des problèmes plus tard, vous pouvez passer à psycopg2 (non-binaire).

Étape 3 : Créer un projet Django (si ce n'est pas déjà fait)

Si vous n'avez pas encore créé de projet, commencez par :

django-admin startproject myproject
cd myproject

Cela vous donnera la structure de base du projet.

Étape 4 : Créer une base de données PostgreSQL

Maintenant, ouvrez votre client PostgreSQL (comme psql ou pgAdmin), et créez une nouvelle base de données :

CREATE DATABASE mydatabase;
CREATE USER myuser WITH PASSWORD 'mypassword';
ALTER ROLE myuser SET client_encoding TO 'utf8';
ALTER ROLE myuser SET default_transaction_isolation TO 'read committed';
ALTER ROLE myuser SET timezone TO 'UTC';
GRANT ALL PRIVILEGES ON DATABASE mydatabase TO myuser;

Cela configure une base de données et un utilisateur avec les bonnes permissions. Remplacez mydatabase, myuser et mypassword par les valeurs que vous préférez.

Étape 5 : Mettre à jour les paramètres Django pour utiliser PostgreSQL

Maintenant, il est temps de dire à Django d'utiliser votre nouvelle base de données PostgreSQL.

Ouvrez myproject/settings.py et cherchez le paramètre DATABASES. Remplacez la section sqlite3 par défaut par ceci :

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'mydatabase',
        'USER': 'myuser',
        'PASSWORD': 'mypassword',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}

Cela indique à Django de :

  • Utiliser PostgreSQL (django.db.backends.postgresql)

  • Se connecter à une base de données locale appelée mydatabase

  • Utiliser l'utilisateur et le mot de passe que vous avez configurés précédemment

Étape 6 : Exécuter les migrations

Maintenant que tout est connecté, créons les tables de base de données dont Django a besoin :

python manage.py migrate

Si tout fonctionne, vous verrez Django créer des tables dans PostgreSQL. Pas d'erreurs ? Vous êtes prêt à continuer !

Étape 7 : Tester la connexion

Testons le tout en créant un superutilisateur (compte administrateur) :

python manage.py createsuperuser

Suivez les instructions, puis exécutez :

python manage.py runserver

Ouvrez votre navigateur et allez à http://127.0.0.1:8000/admin. Connectez-vous avec votre compte superutilisateur. Vous serez dans le tableau de bord d'administration de Django - et oui, tout cela est maintenant soutenu par PostgreSQL !

Problèmes courants (et solutions)

Voici quelques problèmes que vous pourriez rencontrer :

  • Erreur : psycopg2.errors.UndefinedTable : Cela signifie généralement que vous avez oublié d'exécuter migrate.

  • Impossible de se connecter à la base de données : Vérifiez bien le nom de la base de données, l'utilisateur et le mot de passe. Assurez-vous que PostgreSQL est en cours d'exécution.

  • Rôle inexistant : Vous avez peut-être oublié de créer l'utilisateur dans PostgreSQL, ou vous avez utilisé le mauvais nom dans settings.py.

Optionnel : Utiliser dj-database-url pour de meilleurs paramètres

Si vous prévoyez de déployer votre application plus tard (surtout sur des services comme Heroku), gérer vos paramètres de base de données via une URL est plus propre.

Installez le package d'aide :

pip install dj-database-url

Puis dans votre settings.py :

import dj_database_url

DATABASES = {
    'default': dj_database_url.config(default='postgres://myuser:mypassword@localhost:5432/mydatabase')
}

Cela vous permet de contrôler votre configuration de base de données à partir d'une variable d'environnement, ce qui est plus sécurisé et flexible.

Questions fréquemment posées

PostgreSQL est-il meilleur que SQLite pour Django ?

Pour l'apprentissage ou les petits projets, SQLite est bien. Mais pour les applications sérieuses avec beaucoup d'utilisateurs ou des requêtes avancées, PostgreSQL est bien meilleur.

Dois-je installer PostgreSQL sur mon serveur de production ?

Oui - sauf si vous utilisez une solution PostgreSQL hébergée comme Amazon RDS, Heroku Postgres, ou Supabase.

psycopg2-binary est-il sûr à utiliser en production ?

Oui, dans la plupart des cas. Mais certains recommandent de passer à la version non-binaire (psycopg2) en production pour un meilleur contrôle.

Puis-je passer de SQLite à PostgreSQL en cours de projet ?

Oui, mais vous devrez migrer vos données. Des outils comme dumpdata et loaddata de Django peuvent vous aider.

Conclusion

Utiliser PostgreSQL dans Django est une excellente étape lorsque vous souhaitez construire des applications réelles, prêtes pour la production.

La configuration est assez simple une fois que vous connaissez les étapes, et les gains de performance en valent la peine.

Venez dire bonjour sur X.com/_udemezue et consultez mon blog pendant que vous y êtes !

Ressources supplémentaires

Si vous souhaitez approfondir, voici quelques liens que je recommande :