Psycopg(西科普格酒店)¶
logfire.instrument_psycopg()
函数可用于使用 Logfire 检测 Psycopg PostgreSQL 驱动程序。它适用于 psycopg2
和 psycopg
(即 Psycopg 3)包。
有关详细信息,请参阅 OpenTelemetry Psycopg Instrumentation 或 OpenTelemetry Psycopg2 Instrumentation 包的文档。
安装¶
使用 psycopg
extra 安装 logfire
:
pip install 'logfire[psycopg]'
rye add logfire -E psycopg
poetry add 'logfire[psycopg]'
或使用 psycopg2
extra:
pip install 'logfire[psycopg2]'
rye add logfire -E psycopg2
poetry add 'logfire[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
:这将创建一个名为“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.instrument_psycopg(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})
本文总阅读量次