Passer au contenu du pied de page
AIDE PYTHON

psycopg2 (Comment ça marche pour les développeurs)

La bibliothèque psycopg2 est un adaptateur de base de données PostgreSQL populaire pour le langage de programmation Python. Elle est connue pour son efficacité, sa sécurité des threads et sa mise en œuvre complète de la spécification Python DB API 2.0. Explorons ses fonctionnalités et voyons quelques exemples de code. Later in this article, we will learn about IronPDF, a PDF generation library from Iron Software.

Psycopg2 est conçu pour être efficace et sécurisé, le rendant adapté aux applications fortement multithreadées. Certaines de ses fonctionnalités clés incluent:

  • Sécurité des threads : Plusieurs threads peuvent partager la même connexion—la capacité de gérer les applications multithreadées qui créent et détruisent de nombreux curseurs.
  • Curseurs côté client et côté serveur : Gérer efficacement de grands ensembles de données.
  • Communication et notifications asynchrones : Support pour les opérations asynchrones.
  • Support COPY : Charges en vrac de données de manière efficace en utilisant COPY TO et COPY FROM.
  • Système d'adaptation : Adapte automatiquement les types Python aux types PostgreSQL ; le package transpose automatiquement aux types de données PostgreSQL correspondants.
  • Compatibilité Unicode et Python 3 : Support complet pour Unicode et Python 3.

Installation

Vous pouvez installer psycopg2 en utilisant pip :

pip install psycopg2
pip install psycopg2
SHELL

Alternativement, vous pouvez utiliser setup.py du package source localement. Vous pouvez obtenir le package source à partir du référentiel de code source ici :

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

Pour un package autonome qui ne nécessite pas de compilateur ou de bibliothèques externes, vous pouvez utiliser le package psycopg2-binary :

pip install psycopg2-binary
pip install psycopg2-binary
SHELL

Utilisation de base

Voici un exemple simple pour commencer avec psycopg2.

Connexion à une base de données

Tout d'abord, vous devrez vous connecter à votre base de données PostgreSQL :

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

Exécution des requêtes

Vous pouvez exécuter des requêtes SQL en utilisant l'objet curseur :

# 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

Insertion de données

Voici comment insérer des données dans une table :

# 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

Fermeture de la connexion

N'oubliez pas de fermer le curseur et la connexion lorsque vous avez terminé :

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

Les fonctionnalités avancées

Utilisation de COPY pour le chargement en vrac

La commande COPY est utile pour le chargement en vrac de données :

# 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

Notifications asynchrones

Vous pouvez écouter des notifications asynchrones de la base de données :

# 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

Présentation d'IronPDF

psycopg2 (Comment ça fonctionne pour les développeurs) : Figure 1 - IronPDF : La bibliothèque PDF Python

IronPDF est une bibliothèque Python puissante conçue pour créer, éditer, et signer des PDFs en utilisant HTML, CSS, des images, et JavaScript. Elle offre des performances de qualité commerciale avec une empreinte mémoire faible. Les fonctionnalités clés incluent :

Conversion de HTML en PDF :

Convertissez des fichiers HTML, des chaînes HTML et des URLs en PDFs. Par exemple, vous pouvez rendre une page web en PDF en utilisant le moteur de rendu Chrome PDF.

Support multiplateforme :

Compatible avec diverses plateformes .NET, y compris .NET Core, .NET Standard et .NET Framework. Il prend en charge Windows, Linux et macOS.

Édition et signature :

Définissez des propriétés, ajoutez de la sécurité avec des mots de passe et des permissions, et appliquez des signatures numériques à vos PDFs.

Modèles de pages et paramètres :

Personnalisez les PDFs avec des en-têtes, des pieds de page, des numéros de page et des marges ajustables. Prend en charge les mises en page adaptatives et les formats de papier personnalisés.

Conformité aux normes :

Respecte les normes PDF telles que PDF/A et PDF/UA. Il prend en charge l'encodage de caractères UTF-8 et gère les actifs comme les images, CSS et polices.

Générer des documents PDF en utilisant IronPDF et 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

Explication du code

Le script démontre l'interaction avec une base de données PostgreSQL en utilisant psycopg2, la manipulation de données (création, insertion, récupération), et l'intégration avec IronPDF pour la génération de documents.

  1. Connexion à la base de données : Se connecte à une base de données PostgreSQL locale nommée "demo" en utilisant psycopg2, spécifiant les informations d'identification pour l'authentification de l'utilisateur et les détails de l'hôte de la base de données.
  2. Création de table : Définit et exécute une instruction SQL pour créer une table nommée users si elle n'existe pas déjà. La table a des colonnes id (entier, clé primaire), name (texte, non nul), et age (entier).
  3. Insertion de données : Insère des lignes de données dans la table users en utilisant des requêtes paramétrées (user_data). Chaque tuple contient des valeurs pour id, name, et age.
  4. Gestion des transactions : Valide la transaction après la création de la table et l'insertion des données pour s'assurer que les modifications sont enregistrées dans la base de données.
  5. Récupération de données : Exécute une requête SELECT pour récupérer toutes les lignes (SELECT * FROM users) de la table users et récupère les résultats (rows).

  6. Génération de PDF : Utilise IronPDF pour générer un document PDF à partir de contenu HTML. Le contenu HTML inclut un titre et une représentation formatée des données récupérées de la table users.
  7. Sauvegarde du fichier : Enregistre le document PDF généré sous le nom "Demopsycopg2.pdf" dans le répertoire courant.
  8. Fermeture de la connexion : Ferme le curseur de la base de données (cur) et la connexion à la base de données (conn) pour libérer les ressources et garantir un nettoyage approprié.

Pour la gestion des exceptions, enveloppez le script dans des blocs try-catch pour s'assurer que toutes les erreurs d'opération sont traitées en cas de problème de requête ou de connexion.

Sortie

psycopg2 (Comment ça fonctionne pour les développeurs) : Figure 2 - Exemple de sortie de console

PDF

psycopg2 (Comment ça fonctionne pour les développeurs) : Figure 3 - Exemple de sortie utilisant psycopg2 pour stocker et récupérer des données tandis qu'IronPDF génère un rapport PDF

Licence IronPDF

IronPDF fonctionne avec la clé de licence Python. IronPDF pour Python offre une clé de licence d'essai gratuite pour permettre aux utilisateurs de tester ses fonctionnalités étendues avant de l'acheter.

Placez la clé de licence au début du script avant d'utiliser le package IronPDF :

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

Conclusion

Psycopg2 est une bibliothèque puissante et flexible pour interagir avec les bases de données PostgreSQL en Python. Son ensemble de fonctionnalités complet et son design efficace en font un excellent choix pour les opérations de base de données simples et complexes. IronPDF est une bibliothèque et un package Python robuste qui facilite la création, la manipulation et le rendu de documents PDF directement à partir d'applications Python. Il offre des fonctionnalités complètes pour générer des PDFs à partir de contenu HTML, intégrant de manière transparente avec les technologies Web existantes. Avec IronPDF, les développeurs peuvent automatiser efficacement la génération de rapports, de factures et d'autres documents, augmentant ainsi la productivité et l'expérience utilisateur. Ses capacités incluent des formulaires PDF interactifs, l'extraction de texte, la fusion et la division de PDFs, ainsi que l'ajout de fonctionnalités de sécurité comme la protection par mot de passe. La polyvalence et la facilité d'utilisation d'IronPDF en font un outil précieux pour les développeurs cherchant à implémenter des fonctionnalités de génération et de manipulation de PDFs dans leurs projets Python.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite