Psycopg2 – pilote PostgreSQL pour Python

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Psycopg2 : Guide complet pour utiliser PostgreSQL avec Python

Introduction

PostgreSQL est un système de gestion de bases de données relationnelles open source puissant, réputé pour sa fiabilité, son évolutivité et sa prise en charge de types de données avancés. Pour interagir avec PostgreSQL depuis Python, l'outil le plus populaire et le plus fiable est Psycopg2, le pilote synchrone officiel. Il offre une solution stable et performante pour se connecter à la base de données, exécuter des requêtes SQL, gérer les transactions et s'intégrer aux frameworks web.

Psycopg2 est la référence de facto pour travailler avec PostgreSQL dans les projets Python, grâce à sa maturité, sa richesse fonctionnelle et le soutien actif de la communauté des développeurs.

Qu'est-ce que Psycopg2 ?

Psycopg2 est un adaptateur Python pour PostgreSQL, écrit en C et utilisant libpq (la bibliothèque cliente officielle de PostgreSQL). Cette bibliothèque est entièrement conforme à la spécification DB-API 2.0 et offre de nombreuses fonctionnalités supplémentaires spécifiques à PostgreSQL.

Principales fonctionnalités de Psycopg2 :

  • Haute performance : Grâce à son implémentation en C et à une interaction optimisée avec libpq
  • Sécurité : Protection intégrée contre les injections SQL via des requêtes paramétrées
  • Gestion des transactions : Contrôle total des transactions avec possibilité de gestion automatique
  • Compatibilité des types de données : Conversion automatique entre les types PostgreSQL et Python
  • Prise en charge des extensions : Travail avec JSON, UUID, tableaux, hstore et autres types de données PostgreSQL
  • Sécurité des threads : Utilisation possible dans des applications multithreadées

Installation et configuration

Installation de la bibliothèque

pip install psycopg2-binary

Pour un environnement de production, il est recommandé d'utiliser la version complète :

pip install psycopg2

Prérequis système

Avant l'installation, assurez-vous que les dépendances nécessaires sont installées sur votre système :

Ubuntu/Debian :

sudo apt-get install libpq-dev python3-dev

CentOS/RHEL :

sudo yum install postgresql-devel python3-devel

macOS :

brew install postgresql

Connexion à la base de données

Connexion de base

import psycopg2

# Connexion à PostgreSQL
conn = psycopg2.connect(
    dbname="mydb",
    user="postgres",
    password="password",
    host="localhost",
    port="5432"
)

# Création d'un curseur
cur = conn.cursor()

Connexion via une chaîne de connexion

conn = psycopg2.connect("postgresql://user:password@localhost:5432/dbname")

Connexion avec paramètres supplémentaires

conn = psycopg2.connect(
    dbname="mydb",
    user="postgres",
    password="password",
    host="localhost",
    port="5432",
    sslmode="require",
    connect_timeout=10,
    application_name="my_app"
)

Utilisation des gestionnaires de contexte

import psycopg2
from contextlib import contextmanager

@contextmanager
def get_db_connection():
    conn = psycopg2.connect(
        dbname="mydb",
        user="postgres",
        password="password",
        host="localhost"
    )
    try:
        yield conn
    finally:
        conn.close()

# Utilisation
with get_db_connection() as conn:
    with conn.cursor() as cur:
        cur.execute("SELECT * FROM users")
        results = cur.fetchal                    

Recommendations