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=secretTetapkan kata sandi untuk server PostgreSQL. -
-e POSTGRES_DB=databaseIni akan membuat database baru yang disebut "database," database yang sama yang digunakan dalam skrip Python. -
-p 5432:5432Hal 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_driverdbapi_threadsafetydbapi_levellibpq_versiondriver_paramstyleopentelemetry_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})
本文总阅读量次