异步PG¶
logfire.instrument_asyncpg()
函数可用于使用 Logfire 检测 asyncpg PostgreSQL 驱动程序。
安装¶
使用 asyncpg
extra 安装 logfire
:
pip install 'logfire[asyncpg]'
rye add logfire -E asyncpg
poetry add 'logfire[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
:这将创建一个名为“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 上的项目,将看到脚本创建的跨度。
本文总阅读量次