非同期PG¶
logfire.instrument_asyncpg() 関数は、Logfireを使用してasyncpgPostgreSQLドライバを検出するために使用できます。
インストール¶
asyncpg extraを使用して logfire をインストールする:
{{ install_logfire(extras=['asyncpg']) }}
使い方¶
Dockerを使用してPostgreSQLデータベースを設定し、asyncpgを使用してデータベースに接続するPythonスクリプトを実行して、Logfireをasyncpgで使用する方法を示します。
¶
Dockerを使用してPostgreSQLデータベースを設定する
まず、PostgreSQLデータベースを初期化する必要があります。これは、Dockerを使用して次のコマンドで簡単に実行できます。
docker run --name postgres \
-e POSTGRES_USER=user \
-e POSTGRES_PASSWORD=secret \
-e POSTGRES_DB=database \
-p 5432:5432 -d postgres
このコマンドは、次の操作を実行します。
-
--name postgresDockerコンテナの名前を定義します。 -
-e POSTGRES_USER=userPostgreSQLサーバーにユーザーを設定します。 -
-e POSTGRES_PASSWORD=secretPostgreSQLサーバーのパスワードを設定します。 -
-e POSTGRES_DB=database:これにより、Pythonスクリプトで使用されているものと同じ「データベース」という名前の新しいデータベースが作成されます。 -
-p 5432:5432これにより、PostgreSQLインスタンスがローカルコンピューターのポート5432で利用可能になります。 -
-d postgres:これは、使用するDockerイメージを示します。この例では「postgres」です。
Pythonスクリプトの実行¶
次のPythonスクリプトはPostgreSQLデータベースに接続し、いくつかの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())
UIのプロジェクトに移動すると、スクリプトが作成したスパンが表示されます。
本文总阅读量次