Zum Inhalt

Psycopg (Das Hotel Westkopg)

logfire.instrument_psycopg() Funktionen können verwendet werden Logfire Prüfung | und Psycopg Der PostgreSQL-Treiber funktioniert. psycopg2 und psycopg(bzw. ein Psycopg3-Paket).

Weitere Informationen finden Sie in der Dokumentation des Pakets OpenTelemetry Psycopg Instrumentation oder OpenTelemetry Psycopg2 Instrumentation.

Installiert

Installieren Sie logfire mit psycopg extra:

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

Oder verwenden Sie psycopg2 extra:

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

Verwendung

Lassen Sie uns eine PostgreSQL-Datenbank mit Docker einrichten und ein Python-Skript ausführen, das mit Psycopg eine Verbindung zur Datenbank herstellt, um zu demonstrieren, wie Sie die PostgreSQL-Datenbank mit Docker verbinden können. Logfeuer Es wird in Verbindung mit Psycopg verwendet.

PostgreSQL Datenbank mit Docker einrichten

Als erstes müssen wir eine PostgreSQL-Datenbank initialisieren, was mit Docker ganz einfach gemacht werden kann, indem wir den folgenden Befehl ausführen:

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

Dieser Befehl führt die folgenden Operationen durch:

  • --name postgres: Definiert den Namen eines Docker-Containers.

  • -e POSTGRES_USER=user: Richten Sie einen Benutzer für den PostgreSQL-Server ein.

  • -e POSTGRES_PASSWORD=secret: Legt ein Kennwort für den PostgreSQL-Server fest.

  • -e POSTGRES_DB=database Dadurch wird eine neue Datenbank namens "database" erstellt, die der gleichen Datenbank entspricht, die in Python-Skripten verwendet wird.

  • -p 5432:5432 Dadurch ist die PostgreSQL-Instanz auf dem lokalen Computer unter Port 5432 verfügbar.

  • -d postgres: Dies gibt das zu verwendende Docker-Image an, in diesem Fall "postgres".

Python Skripte ausführen

Das folgende Python-Skript stellt eine Verbindung mit der PostgreSQL-Datenbank her und führt einige SQL-Abfragen aus:

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')

Wenn Sie zum Projekt auf der Benutzeroberfläche gehen, sehen Sie die Spanne, die das Skript erstellt hat.

Der SQL Kommentator

Um SQL-Kommentare am Ende einer Abfrage hinzuzufügen, um das Datenbankprotokoll mit einem anderen Kontext anzureichern, verwenden Sie den enable_commenter-Parameter:

Einführung in LogFire

logfire. configure ()(Dateiendung)
logfire. instrument_psychopg (enable_commenter = true)[Bearbeiten | Quelltext bearbeiten]

Dies kann nur beim Erkennen des gesamten Moduls verwendet werden , nicht beim Erkennen einzelner Verbindungen .

Standardmäßig enthält ein SQL-Kommentar den Wert der folgenden Schlüssel :

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

Sie können diese Schlüssel und Werte durch Übergeben enthalten False Das Wörterbuch, um einen dieser Schlüssel auszuschließen commenter_options; zum Beispiel:

import logfire

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

[ Opentelemetry-Psycopg ] oderhttps://opentelemetry-python-contrib.readthedocs.io/en/latest/instrumentation/psycopg/psycopg.html [ Opentelemetry-Psycopg2 ] oderhttps://opentelemetry-python-contrib.readthedocs.io/en/latest/instrumentation/psycopg2/psycopg2.html [ Bearbeiten ] :https://www.psycopg.org/


本文总阅读量次