PG asinkron¶
logfire.instrument_asyncpg() Fungsi dapat digunakan untuk Logfire mendeteksi asyncpg Pengemudi PostgreSQL.
menginstal¶
Instal logfire dengan asyncpg ekstra:
{{ install_logfire(extras=['asyncpg']) }}
penggunaan¶
Mari kita atur database PostgreSQL menggunakan Docker dan jalankan skrip Python yang terhubung ke database menggunakan asyncpg untuk mendemonstrasikan cara menggunakanLogfiredengan asyncpg.
¶
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 asyncio
import asyncpg
import logfire
logfire.configure()
logfire.instrument_asyncpg()
async def main():
connection: asyncpg.Connection = await asyncpg.connect(
user='user', password='secret', database='database', host='0.0.0.0', port=5432
)
with logfire.span('Create table and insert data'):
await connection.execute('CREATE TABLE IF NOT EXISTS test (id serial PRIMARY KEY, num integer, data varchar);')
# Insert some data
await connection.execute('INSERT INTO test (num, data) VALUES ($1, $2)', 100, 'abc')
await connection.execute('INSERT INTO test (num, data) VALUES ($1, $2)', 200, 'def')
# Query the data
for record in await connection.fetch('SELECT * FROM test'):
logfire.info('Retrieved {record=}', record=record)
asyncio.run(main())
Jika Anda pergi ke proyek di UI, Anda akan melihat rentang pembuatan skrip.
本文总阅读量次