Lewati ke isi

Psycopg (Hotel Kopg Barat)

logfire.instrument_psycopg() Fungsi dapat digunakan untuk Logfire mendeteksi Jiwa Driver PostgreSQL. Ini berlaku untuk psycopg2 dan psycopg(Yaitu Psycopg 3) paket.

Untuk informasi lebih lanjut, lihat dokumentasi untuk paket OpenTelemetry Psycopg Instrumentation atau OpenTelemetry Psycopg2 Instrumentation.

menginstal

Instal logfire dengan psycopg ekstra:

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

Atau gunakan psycopg2 ekstra:

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

penggunaan

Mari kita atur database PostgreSQL menggunakan Docker dan jalankan skrip Python yang terhubung ke database menggunakan Psycopg untuk mendemonstrasikan cara menggunakanLogfiredengan Psycopg.

Menyiapkan database PostgreSQL dengan Docker

Pertama, kita perlu menginisialisasi database PostgreSQL. Ini dapat dengan mudah dilakukan menggunakan Docker dengan perintah berikut:

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

Perintah ini melengkapi operasi berikut:

  • --name postgres: Tentukan nama wadah Docker.

  • -e POSTGRES_USER=user: Siapkan pengguna untuk server PostgreSQL.

  • -e POSTGRES_PASSWORD=secret Tetapkan kata sandi untuk server PostgreSQL.

  • -e POSTGRES_DB=database Ini akan membuat database baru yang disebut "database," database yang sama yang digunakan dalam skrip Python.

  • -p 5432:5432 Hal ini membuat instance PostgreSQL tersedia di komputer lokal pada port 5432.

  • -d postgres: Ini menunjukkan gambar Docker untuk digunakan, dalam hal ini "postgres."

Jalankan skrip Python

Script Python berikut terhubung ke database PostgreSQL dan mengeksekusi beberapa kueri 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')

Jika Anda pergi ke proyek di UI, Anda akan melihat rentang pembuatan skrip.

pengganggu SQL

Untuk menambahkan komentar SQL ke akhir kueri untuk memperkaya binlog dengan konteks tambahan, gunakan parameter enable_commenter:

Logfire Impor

Logfire. Konfigurasi ()
Logfire.instrument _ psycopg (enabled _ commenter = true)

Ini hanya dapat digunakan saat memeriksa seluruh modul, bukan saat memeriksa satu koneksi.

Secara default, komentar SQL akan berisi nilai-nilai kunci berikut:

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

Anda dapat mengecualikan salah satu kunci ini dari commenter_options dengan melewati kamus yang berisi kunci dan nilai False, misalnya:

import logfire

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

本文总阅读量次