PG asynchrone¶
La fonction logfire.instrument_asyncpg() peut être utilisée pour détecter les pilotes asyncpg(](https://magicstack.github.io/asyncpg/) PostgreSQL ™ avecLogfire.
Installation de¶
Installer logfire avec asyncpg extra:
{{ install_logfire(extras=['asyncpg']) }}
Utilisation de¶
Configurer une base de données PostgreSQL avec Docker et exécuter un script Python qui se connecte à la base de données avec asyncpg pour montrer comment utiliserLogfireavec asyncpg.
¶
Configurer une base de données PostgreSQL avec Docker
Tout d'abord, nous devons initialiser une base de données PostgreSQL ™, ce qui peut être fait facilement avec Docker en utilisant la commande suivante:
docker run --name postgres \
-e POSTGRES_USER=user \
-e POSTGRES_PASSWORD=secret \
-e POSTGRES_DB=database \
-p 5432:5432 -d postgres
Cette commande fait ce qui suit: .
-
--name postgres: Définit le nom du conteneur Docker. -
-e POSTGRES_USER=user: Configurer un utilisateur pour le serveur PostgreSQL. -
-e POSTGRES_PASSWORD=secret: Définit un mot de passe pour le serveur PostgreSQL. -
-e POSTGRES_DB=database: Cela crée une nouvelle base de données appelée « base de données », identique à celle utilisée dans les scripts Python. -
-p 5432:5432: Cela rend l'instance PostgreSQL disponible sur l'ordinateur local sous le port 5432. -
-d postgres: Ceci indique le miroir Docker à utiliser, dans ce cas « postgres ».
Exécuter un script Python¶
Le script Python suivant se connecte à la base de données PostgreSQL et exécute quelques requêtes 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())
Si vous accédez à un projet sur l'interface utilisateur, vous verrez l'étendue créée par le script.
本文总阅读量次