Ga naar inhoud

Psycopg (West Copg Hotel), Australië

De logfire.instrument_psycopg() -functie kan worden gebruikt om de Psycopg PostgreSQL-driver te detecteren metLogfire. Het werkt met de psycopg2- en psycopg-pakketten (d.w.z. Psycopg 3).

Zie voor meer informatie de documentatie voor de OpenTelemetry Psycopg Instrumentation of OpenTelemetry Psycopg2 Instrumentation-pakketten.

installeren

Installeer logfire met psycopg extra:

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

Of gebruik psycopg2 extra:

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

gebruik

Laten we een PostgreSQL-database opzetten met Docker en een Python-script uitvoeren dat verbinding maakt met de database met Psycopg om te demonstreren hoeLogfiremet Psycopg te gebruiken.

Het opzetten van een PostgreSQL database met Docker

Eerst moeten we een PostgreSQL-database initialiseren. Dit kan eenvoudig worden gedaan met Docker met het volgende commando:

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

Deze bestelling voltooit de volgende bewerkingen:

  • --name postgres: Definieer de naam van de Docker-container.

  • -e POSTGRES_USER=user: Een gebruiker instellen voor de PostgreSQL server.

  • -e POSTGRES_PASSWORD=secret Stel een wachtwoord in voor de PostgreSQL-server.

  • -e POSTGRES_DB=database Hierdoor wordt een nieuwe database met de naam "database" gemaakt, dezelfde database die wordt gebruikt in Python-scripts.

  • -p 5432:5432 Dit maakt de PostgreSQL-instantie beschikbaar op de lokale computer op poort 5432.

  • -d postgres: Dit geeft de te gebruiken Docker-afbeelding aan, in dit geval "postgres".

Voer een Python-script uit

Het volgende Python-script maakt verbinding met een PostgreSQL-database en voert enkele SQL-query 's uit:

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

Als u naar het project in de gebruikersinterface gaat, ziet u de reikwijdte van het maken van scripts.

SQL annotator

Gebruik de enable_commenter-parameter om SQL-opmerkingen aan het einde van een query toe te voegen om de binlog te verrijken met extra context:

Logfire importeren

Logfire.configure ()
Logfire.instrument _ psycopg (inschakelen _ commentator = waar)

Dit kan alleen worden gebruikt bij het inspecteren van de hele module, niet bij het inspecteren van een enkele verbinding.

Standaard bevatten SQL-opmerkingen de waarden van de volgende sleutels:

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

U kunt elk van deze sleutels van commenter_options uitsluiten door een woordenboek met de sleutels en waarden False door te geven, bijvoorbeeld:

import logfire

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

本文总阅读量次