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=databaseDadurch wird eine neue Datenbank namens "database" erstellt, die der gleichen Datenbank entspricht, die in Python-Skripten verwendet wird. -
-p 5432:5432Dadurch 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_driverdbapi_threadsafetydbapi_levellibpq_versiondriver_paramstyleopentelemetry_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/
本文总阅读量次