コンテンツにスキップ

Psycopg(シコプグホテル)

logfire.instrument_psycopg() 関数は、Logfireを使用して、PsycopgPostgreSQLドライバを検出するために使用できます。これは、psycopg2 および psycopg(つまり、Psycopg 3)パッケージに適用されます。

詳細については、OpenTelemetyPsycopg InstrumentationまたはOpenTelemetyPsycopg 2 Instrumentationパッケージのドキュメントを参照してください。

インストール

psycopg extraを使用して logfire をインストールする:

{{ install_logfire(extras=['psycopg']) }}

または、psycopg2 extraを使用してください:

{{ install_logfire(extras=['psycopg2']) }}

使い方

Dockerを使用してPostgreSQLデータベースを設定し、Psycopgを使用してデータベースに接続するPythonスクリプトを実行して、LogfireをPsycopgで使用する方法を示します。

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 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')

UIのプロジェクトに移動すると、スクリプトが作成したスパンが表示されます。

SQLのコメント作成者

クエリの末尾にSQLコメントを追加して、他のコンテキストでデータベースログを充実させるには、 enable_commenter パラメータ:

Logfireをインポート

logfire. configure()
logfire. strumentPsycopg(enable_commenter=真)

これは、モジュール全体を検出する場合にのみ使用でき、単一の接続を検出する場合には使用できません。

デフォルトでは、SQLコメントには次のキーの値が含まれます。

  • db_driver
  • dbapi_threadsafety
  • dbapi_level
  • libpq_version
  • driver_paramstyle
  • opentelemetry_values

これらのキーと False の値を含む辞書を渡すことで、これらのキーのいずれかを commenter_options から除外できます。

import logfire

logfire.configure()
logfire.instrument_psycopg(enable_commenter=True, commenter_options={'db_driver': False, 'dbapi_threadsafety': False})

本文总阅读量次