Aller au contenu

Psycopg(Hôtel West Koepg)

logfire.instrument_psycopg() Les fonctions sont disponibles pour utiliser Logfire est une Détection des Psycopg par exemple Pilote PostgreSQL. il fonctionne pour psycopg2 et psycopg(c'est-à-dire Psycopg 3) paquets.

Pour plus d'informations, consultez la documentation du package OpenTelemetry Psycopg Instrumentation ou OpenTelemetry Psycopg2 Instrumentation.

Installation de

Installation de logfire avec psycopg extra:

{{ install_logfire(extras=['psycopg']) }}

Ou avec psycopg2 extra:

{{ install_logfire(extras=['psycopg2']) }}

Utilisation de

Configurer une base de données PostgreSQL avec Docker et exécuter un script Python qui se connecte à la base de données avec Psycopg pour montrer comment utiliserLogfireavec Psycopg.

Configurer une base de données PostgreSQL avec Docker

Tout d'abord, nous devons initialiser une base de données PostgreSQL ™, ce qui peut être fait facilement avec Docker en utilisant la commande suivante:

docker run --name postgres \
    -e POSTGRES_USER=user \
    -e POSTGRES_PASSWORD=secret \
    -e POSTGRES_DB=database \
    -p 5432:5432 -d postgres

Cette commande fait ce qui suit:

  • --name postgres: Définit le nom du conteneur Docker.

  • -e POSTGRES_USER=user: Configurer un utilisateur pour le serveur PostgreSQL.

  • -e POSTGRES_PASSWORD=secret: Définit un mot de passe pour le serveur PostgreSQL.

  • -e POSTGRES_DB=database: Cela crée une nouvelle base de données appelée « base de données », identique à celle utilisée dans les scripts Python.

  • -p 5432:5432: Cela rend l'instance PostgreSQL disponible sur l'ordinateur local sous le port 5432.

  • -d postgres: Ceci indique le miroir Docker à utiliser, dans ce cas « postgres ».

Exécuter un script Python

Le script Python suivant se connecte à la base de données PostgreSQL et exécute quelques requêtes SQL:

import logfire
import psycopg

logfire.configure()

# To instrument the whole module:
logfire.instrument_psycopg(psycopg)
# or
logfire.instrument_psycopg('psycopg')
# or just instrument whichever modules (psycopg and/or psycopg2) are installed:
logfire.instrument_psycopg()

connection = psycopg.connect(
    'dbname=database user=user password=secret host=0.0.0.0 port=5432'
)

# Or instrument just the connection:
logfire.instrument_psycopg(connection)

with logfire.span('Create table and insert data'), connection.cursor() as cursor:
    cursor.execute(
        'CREATE TABLE IF NOT EXISTS test (id serial PRIMARY KEY, num integer, data varchar);'
    )

    # Insert some data
    cursor.execute('INSERT INTO test (num, data) VALUES (%s, %s)', (100, 'abc'))
    cursor.execute('INSERT INTO test (num, data) VALUES (%s, %s)', (200, 'def'))

    # Query the data
    cursor.execute('SELECT * FROM test')

Si vous accédez à un projet sur l'interface utilisateur, vous verrez l'étendue créée par le script.

SQL commentateur

Pour ajouter un commentaire SQL à la fin d'une requête afin d'enrichir le journal de la base de données avec un contexte supplémentaire, utilisez le paramètre enable_commenter:

Importer dans Logfire

logfire.configure()
logfire.instrument_psycopg(enable_commenter= true)

Ceci ne peut être utilisé que pour détecter un module entier, pas une seule connexion.

Par défaut, les commentaires SQL contiendront les valeurs des clés suivantes:

  • db_driver
  • dbapi_threadsafety
  • dbapi_level
  • libpq_version
  • driver_paramstyle
  • opentelemetry_values

Vous pouvez exclure commenter_options de l'une de ces clés en passant un dictionnaire contenant ces clés et la valeur False, par exemple:

import logfire

logfire.configure()
logfire.instrument_psycopg(enable_commenter=True, commenter_options={'db_driver': False, 'dbapi_threadsafety': False})

本文总阅读量次