Zum Fußzeileninhalt springen
PYTHON-HILFE

psycopg2 (Wie es für Entwickler funktioniert)

Die psycopg2 Bibliothek ist ein beliebter PostgreSQL-Datenbankadapter für die Programmiersprache Python. Sie ist bekannt für ihre Effizienz, die Thread-Sicherheit und die vollständige Umsetzung der Python DB API 2.0 Spezifikation. Lassen Sie uns seine Funktionen erkunden und einige Codebeispiele ansehen. Later in this article, we will learn about IronPDF, a PDF generation library from Iron Software.

Psycopg2 ist darauf ausgelegt, effizient und sicher zu sein, was es für stark multithreadige Anwendungen geeignet macht. Einige seiner wichtigsten Funktionen sind:

  • Thread-Sicherheit: Mehrere Threads können die gleiche Verbindung teilen - die Fähigkeit, mit multithreadigen Anwendungen umzugehen, die viele Cursors erstellen und zerstören.
  • Client-Seitige und Server-Seitige Cursors: Effizientes Handhaben großer Datenmengen.
  • Asynchrone Kommunikation und Benachrichtigungen: Unterstützung für asynchrone Operationen.
  • COPY Unterstützung: Effizientes Massenladen von Daten mithilfe von COPY TO und COPY FROM.
  • Anpassungssystem: Automatische Anpassung von Python-Typen an PostgreSQL-Typen; das Paket wird automatisch in die entsprechenden PostgreSQL-Datenformate umgewandelt.
  • Unicode und Python 3 freundlich: Volle Unterstützung für Unicode und Python 3.

Installation

Sie können psycopg2 mit pip installieren:

pip install psycopg2
pip install psycopg2
SHELL

Alternativ können Sie setup.py aus dem Quellpaket lokal verwenden. Sie können das Quellpaket aus dem Quellcode-Repository hier beziehen:

python setup.py build
sudo python setup.py install
python setup.py build
sudo python setup.py install
SHELL

Für ein Einzelpaket, das keinen Compiler oder externe Bibliotheken erfordert, können Sie das psycopg2-binary-Paket verwenden:

pip install psycopg2-binary
pip install psycopg2-binary
SHELL

Grundlegende Verwendung

Hier ist ein einfaches Beispiel, um Ihnen den Einstieg mit psycopg2 zu erleichtern.

Verbindung zu einer Datenbank herstellen

Zuerst müssen Sie eine Verbindung zu Ihrer PostgreSQL-Datenbank herstellen:

import psycopg2

# Connect to your PostgreSQL database
conn = psycopg2.connect(
    dbname="your_dbname",
    user="your_username",
    password="your_password",
    host="your_host",
    port="your_port"
)

# Create a cursor object
cur = conn.cursor()
import psycopg2

# Connect to your PostgreSQL database
conn = psycopg2.connect(
    dbname="your_dbname",
    user="your_username",
    password="your_password",
    host="your_host",
    port="your_port"
)

# Create a cursor object
cur = conn.cursor()
PYTHON

Abfragen ausführen

Sie können SQL-Anfragen mit dem Cursor-Objekt ausführen:

# Execute a query
cur.execute("SELECT * FROM your_table")

# Fetch all results
rows = cur.fetchall()

# Print the results
for row in rows:
    print(row)
# Execute a query
cur.execute("SELECT * FROM your_table")

# Fetch all results
rows = cur.fetchall()

# Print the results
for row in rows:
    print(row)
PYTHON

Daten einfügen

So fügen Sie Daten in eine Tabelle ein:

# Insert data into a table
cur.execute(
    "INSERT INTO your_table (column1, column2) VALUES (%s, %s)",
    ("value1", "value2")
)

# Commit the transaction
conn.commit()
# Insert data into a table
cur.execute(
    "INSERT INTO your_table (column1, column2) VALUES (%s, %s)",
    ("value1", "value2")
)

# Commit the transaction
conn.commit()
PYTHON

Die Verbindung schließen

Vergessen Sie nicht, den Cursor und die Verbindung zu schließen, wenn Sie fertig sind:

# Close the cursor and connection
cur.close()
conn.close()
# Close the cursor and connection
cur.close()
conn.close()
PYTHON

Erweiterte Funktionen

Benutzung von COPY für Massenladen

Der COPY-Befehl ist hilfreich für das Massenladen von Daten:

# Use COPY to load data from a file
with open('data.csv', 'r') as f:
    cur.copy_from(f, 'your_table', sep=',')

conn.commit()
# Use COPY to load data from a file
with open('data.csv', 'r') as f:
    cur.copy_from(f, 'your_table', sep=',')

conn.commit()
PYTHON

Asynchrone Benachrichtigungen

Sie können asynchrone Benachrichtigungen von der Datenbank abhören:

# Listen for notifications
cur.execute("LISTEN your_channel")

# Wait for a notification
conn.poll()

while conn.notifies:
    notify = conn.notifies.pop(0)
    print("Got NOTIFY:", notify.payload)
# Listen for notifications
cur.execute("LISTEN your_channel")

# Wait for a notification
conn.poll()

while conn.notifies:
    notify = conn.notifies.pop(0)
    print("Got NOTIFY:", notify.payload)
PYTHON

Einführung in IronPDF

psycopg2 (wie es für Entwickler funktioniert): Abbildung 1 - IronPDF: Die Python PDF-Bibliothek

IronPDF ist eine leistungsstarke Python-Bibliothek, die zum Erstellen, Bearbeiten und Signieren von PDFs unter Verwendung von HTML, CSS, Bildern und JavaScript entwickelt wurde. Sie bietet eine kommerzielle Leistung mit geringem Speicherbedarf. Hauptmerkmale sind:

HTML-zu-PDF-Konvertierung:

Konvertieren Sie HTML-Dateien, HTML-Zeichenketten und URLs in PDFs. Beispielsweise eine Webseite mithilfe des Chrome-PDF-Renderers als PDF rendern.

Plattformübergreifende Unterstützung:

Kompatibel mit verschiedenen .NET-Plattformen, einschließlich .NET Core, .NET Standard und .NET Framework. Es unterstützt Windows, Linux und macOS.

Bearbeitung und Signierung:

Eigenschaften festlegen, Sicherheit mit Passwörtern und Berechtigungen hinzufügen und digitale Signaturen auf Ihre PDFs anwenden.

Seitenvorlagen und Einstellungen:

Passen Sie PDFs mit Kopf- und Fußzeilen, Seitenzahlen und einstellbaren Rändern an. Unterstützt responsive Layouts und benutzerdefinierte Papiergrößen.

Standardkonformität:

Hält sich an PDF-Standards wie PDF/A und PDF/UA. Es unterstützt die UTF-8-Zeichenkodierung und verarbeitet Assets wie Bilder, CSS und Schriftarten.

PDF-Dokumente generieren mit IronPDF und psycopg2

import psycopg2
from ironpdf import *

# Apply your license key
License.LicenseKey = "Key"

# Connect to your local PostgreSQL database
conn = psycopg2.connect(
    dbname="demo",
    user="postgres",
    password="postgres",
    host="localhost",
    port="5432"
)

# Create a cursor object
cur = conn.cursor()

# Create the users table if it doesn't already exist
cur.execute('''
    CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY,
        name TEXT NOT NULL,
        age INTEGER
    )
''')

# Commit the transaction
conn.commit()

# Define the SQL statement for inserting data into the table
insert_query = '''
    INSERT INTO users (id, name, age)
    VALUES (%s, %s, %s)
'''

# Data to be inserted
user_data = [
    (1, 'John', 25),
    (2, 'Smith', 35),
    (3, 'Tom', 29)
]

# Insert data into the table
for user in user_data:
    cur.execute(insert_query, user)

# Commit the transaction
conn.commit()

# Execute a query to retrieve data from the users table
cur.execute("SELECT * FROM users")

# Fetch all results
rows = cur.fetchall()

# Initialize PDF renderer
renderer = ChromePdfRenderer()

# Create a PDF from HTML content
content = "<h1>Awesome Iron PDF with psycopg2</h1>"
content += "<p>Table data:</p>"
for row in rows:
    print(row)
    content += f"<p>{row}</p>"

# Close the cursor and connection
cur.close()
conn.close()

# Render HTML content as PDF
pdf = renderer.RenderHtmlAsPdf(content)

# Save the PDF to a file
pdf.SaveAs("Demopsycopg2.pdf")
import psycopg2
from ironpdf import *

# Apply your license key
License.LicenseKey = "Key"

# Connect to your local PostgreSQL database
conn = psycopg2.connect(
    dbname="demo",
    user="postgres",
    password="postgres",
    host="localhost",
    port="5432"
)

# Create a cursor object
cur = conn.cursor()

# Create the users table if it doesn't already exist
cur.execute('''
    CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY,
        name TEXT NOT NULL,
        age INTEGER
    )
''')

# Commit the transaction
conn.commit()

# Define the SQL statement for inserting data into the table
insert_query = '''
    INSERT INTO users (id, name, age)
    VALUES (%s, %s, %s)
'''

# Data to be inserted
user_data = [
    (1, 'John', 25),
    (2, 'Smith', 35),
    (3, 'Tom', 29)
]

# Insert data into the table
for user in user_data:
    cur.execute(insert_query, user)

# Commit the transaction
conn.commit()

# Execute a query to retrieve data from the users table
cur.execute("SELECT * FROM users")

# Fetch all results
rows = cur.fetchall()

# Initialize PDF renderer
renderer = ChromePdfRenderer()

# Create a PDF from HTML content
content = "<h1>Awesome Iron PDF with psycopg2</h1>"
content += "<p>Table data:</p>"
for row in rows:
    print(row)
    content += f"<p>{row}</p>"

# Close the cursor and connection
cur.close()
conn.close()

# Render HTML content as PDF
pdf = renderer.RenderHtmlAsPdf(content)

# Save the PDF to a file
pdf.SaveAs("Demopsycopg2.pdf")
PYTHON

Code-Erklärung

Das Skript demonstriert die Interaktion mit einer PostgreSQL-Datenbank mit psycopg2, Datenmanipulation (Erstellung, Einfügung, Abruf) und Integration mit IronPDF zur Dokumentengenerierung.

  1. Datenbankverbindung: Stellt eine Verbindung zu einer lokalen PostgreSQL-Datenbank namens "demo" mit psycopg2 her, wobei Anmeldeinformationen für die Benutzerauthentifizierung und Details zum Datenbankhost angegeben werden.
  2. Tabellenerstellung: Definiert und führt eine SQL-Anweisung aus, um eine Tabelle namens users zu erstellen, falls diese noch nicht existiert. Die Tabelle hat die Spalten id (Integer, Primärschlüssel), name (Text, nicht null) und age (Integer).
  3. Dateneinfügung: Fügt Datenzeilen in die users-Tabelle mithilfe parametrisierter Abfragen (user_data) ein. Jedes Tupel enthält Werte für id, name und age.
  4. Transaktionsverwaltung: Bestätigt die Transaktion nach der Tabellenerstellung und Dateneinfügung, um sicherzustellen, dass die Änderungen in der Datenbank gespeichert werden.
  5. Datenabruf: Führt eine SELECT-Abfrage aus, um alle Zeilen (SELECT * FROM users) aus der users-Tabelle abzurufen und die Ergebnisse (rows) zu erhalten.

  6. PDF-Erstellung: Verwendet IronPDF zur Erstellung eines PDF-Dokuments aus HTML-Inhalten. Der HTML-Inhalt enthält einen Titel und eine formatierte Darstellung der abgerufenen Daten aus der users-Tabelle.
  7. Dateispeicherung: Speichert das generierte PDF-Dokument als "Demopsycopg2.pdf" im aktuellen Verzeichnis.
  8. Verbindung schließen: Schließt den Datenbank-Cursor (cur) und die Datenbankverbindung (conn), um Ressourcen freizugeben und eine ordnungsgemäße Bereinigung sicherzustellen.

Zur Fehlerbehandlung das Skript in try-catch Blöcke einschließen, um sicherzustellen, dass alle Fehleroperationen im Falle eines Abfrage- oder Verbindungsproblems behandelt werden.

Ausgabe

psycopg2 (wie es für Entwickler funktioniert): Abbildung 2 - Beispiel Konsolenausgabe

PDF

psycopg2 (wie es für Entwickler funktioniert): Abbildung 3 - Beispielausgabeverwendung von psycopg2 zum Speichern und Abrufen von Daten, während IronPDF einen PDF-Bericht erstellt

IronPDF-Lizenz

IronPDF läuft auf dem Python-Lizenzschlüssel. IronPDF für Python bietet einen kostenlosen Testlizenzschlüssel an, mit dem Benutzer die umfangreichen Funktionen vor dem Kauf testen können.

Platzieren Sie den Lizenzschlüssel am Anfang des Skripts, bevor Sie das IronPDF-Paket verwenden:

from ironpdf import *
# Apply your license key
License.LicenseKey = "key"
from ironpdf import *
# Apply your license key
License.LicenseKey = "key"
PYTHON

Abschluss

Psycopg2 ist eine leistungsstarke und flexible Bibliothek für die Interaktion mit PostgreSQL-Datenbanken in Python. Sein umfassendes Funktionsset und sein effizientes Design machen es zu einer ausgezeichneten Wahl für einfache und komplexe Datenbankoperationen. IronPDF ist ein robustes Python-Paket und eine Bibliothek, die die Erstellung, Manipulation und Darstellung von PDF-Dokumenten direkt aus Python-Anwendungen ermöglicht. Es bietet umfassende Funktionen zur Erstellung von PDFs aus HTML-Inhalten, die sich nahtlos in bestehende Webtechnologien integrieren. Mit IronPDF können Entwickler das Erstellen von Berichten, Rechnungen und anderen Dokumentationen effizient automatisieren, was die Produktivität und Benutzererfahrung verbessert. Seine Fähigkeiten umfassen interaktive PDF-Formulare, Textextraktion, Zusammenführen und Aufteilen von PDFs sowie das Hinzufügen von Sicherheitsfunktionen wie Passwortschutz. Die Vielseitigkeit und Benutzerfreundlichkeit von IronPDF machen es zu einem wertvollen Werkzeug für Entwickler, die PDF-Generierungs- und Manipulationsfunktionen in ihre Python-Projekte integrieren möchten.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen