Psycopg2: Vollständiger Leitfaden für PostgreSQL in Python
Einleitung
PostgreSQL ist ein leistungsstarkes, quelloffenes relationales Datenbanksystem, das für seine Zuverlässigkeit, Skalierbarkeit und Unterstützung komplexer Datentypen bekannt ist. Für die Arbeit mit PostgreSQL in Python ist Psycopg2 das beliebteste und zuverlässigste Werkzeug – der offizielle synchrone Treiber, der eine stabile und leistungsstarke Lösung für Datenbankverbindungen, SQL-Abfragen, Transaktionsverwaltung und die Integration mit Web-Frameworks bietet.
Psycopg2 gilt aufgrund seiner Reife, seines vollständigen Funktionsumfangs und der aktiven Community-Unterstützung als De-facto-Standard für die Arbeit mit PostgreSQL in Python-Projekten.
Was ist Psycopg2?
Psycopg2 ist ein Python-Adapter für PostgreSQL, der in C unter Verwendung von libpq (der offiziellen Client-Bibliothek von PostgreSQL) geschrieben wurde. Die Bibliothek erfüllt die DB-API 2.0-Spezifikation vollständig und bietet zahlreiche zusätzliche, PostgreSQL-spezifische Funktionen.
Hauptmerkmale von Psycopg2:
- Hohe Leistung: Dank C-Implementierung und optimierter Interaktion mit libpq
- Sicherheit: Integrierter Schutz vor SQL-Injection durch parametrisierte Abfragen
- Transaktionsunterstützung: Volle Kontrolle über Transaktionen mit automatischer Verwaltung
- Datentyp-Kompatibilität: Automatische Konvertierung zwischen PostgreSQL- und Python-Datentypen
- Erweiterungsunterstützung: Arbeit mit JSON, UUID, Arrays, hstore und anderen PostgreSQL-Datentypen
- Thread-Sicherheit: Einsatz in Multithread-Anwendungen möglich
Installation und Einrichtung
Bibliothek installieren
pip install psycopg2-binary
Für Produktionsumgebungen wird die vollständige Version empfohlen:
pip install psycopg2
Systemvoraussetzungen
Stellen Sie vor der Installation sicher, dass die erforderlichen Abhängigkeiten installiert sind:
Ubuntu/Debian:
sudo apt-get install libpq-dev python3-dev
CentOS/RHEL:
sudo yum install postgresql-devel python3-devel
macOS:
brew install postgresql
Verbindung zur Datenbank herstellen
Einfache Verbindung
import psycopg2
# Verbindung zu PostgreSQL herstellen
conn = psycopg2.connect(
dbname="mydb",
user="postgres",
password="password",
host="localhost",
port="5432"
)
# Cursor erstellen
cur = conn.cursor()
Verbindung über Verbindungs-String
conn = psycopg2.connect("postgresql://user:password@localhost:5432/dbname")
Verbindung mit zusätzlichen Parametern
conn = psycopg2.connect(
dbname="mydb",
user="postgres",
password="password",
host="localhost",
port="5432",
sslmode="require",
connect_timeout=10,
application_name="my_app"
)
Verwendung von Kontext-Managern
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()
# Verwendung
with get_db_connection() as conn:
with conn.cursor() as cur:
cur.execute("SELECT * FROM users")
results = cur.fetchal