跳转至

MySQL的

logfire.instrument_mysql() 方法可用于使用 Logfire 检测 MySQL Connector/Python 数据库驱动程序,为每个查询创建一个跨度。

安装

使用 mysql extra 安装 logfire

pip install 'logfire[mysql]'
rye add logfire -E mysql
poetry add 'logfire[mysql]'

用法

让我们使用 Docker 设置一个 MySQL 数据库,并运行一个使用 MySQL 连接器连接到数据库的 Python 脚本,以演示如何将 Logfire 与 MySQL 一起使用。

使用 Docker 设置 MySQL 数据库

首先,我们需要初始化一个MySQL数据库。这可以通过以下命令使用 Docker 轻松完成:

docker run --name mysql \
    -e MYSQL_ROOT_PASSWORD=secret \
    -e MYSQL_DATABASE=database \
    -e MYSQL_USER=user \
    -e MYSQL_PASSWORD=secret \
    -p 3306:3306 -d mysql

此命令完成以下操作:

  • --name mysql:给容器取名为“mysql”。

  • -e MYSQL_ROOT_PASSWORD=secret 将 root 密码设置为 “secret”。

  • -e MYSQL_DATABASE=database 创建一个名为 “database” 的新数据库。

  • -e MYSQL_USER=user 创建一个名为 “user” 的新用户。

  • -e MYSQL_PASSWORD=secret 将新用户的密码设置为“secret”。

  • -p 3306:3306 将 Docker 内的端口 3306 映射为主机上的端口 3306。

  • -d mysql 在后台运行容器并打印容器 ID。图像是“mysql”。

运行 Python 脚本

以下 Python 脚本连接到 MySQL 数据库并执行一些 SQL 查询:

import logfire
import mysql.connector

logfire.configure()

# To instrument the whole module:
logfire.instrument_mysql()

connection = mysql.connector.connect(
    host="localhost",
    user="user",
    password="secret",
    database="database",
    port=3306,
    use_pure=True,
)

# Or instrument just the connection:
# connection = logfire.instrument_mysql(connection)

with logfire.span('Create table and insert data'), connection.cursor() as cursor:
    cursor.execute(
        'CREATE TABLE IF NOT EXISTS test (id INT AUTO_INCREMENT PRIMARY KEY, num integer, data varchar(255));'
    )

    # 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')
    results = cursor.fetchall()  # Fetch all rows
    for row in results:
        print(row)  # Print each row

logfire.instrument_mysql() 使用 OpenTelemetry MySQL Instrumentation 包,您可以在此处找到有关该包的更多信息。


本文总阅读量