コンテンツにスキップ

非同期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 postgres Dockerコンテナの名前を定義します。

  • -e POSTGRES_USER=user PostgreSQLサーバーにユーザーを設定します。

  • -e POSTGRES_PASSWORD=secret PostgreSQLサーバーのパスワードを設定します。

  • -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のプロジェクトに移動すると、スクリプトが作成したスパンが表示されます。


本文总阅读量次