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 包,您可以在此处找到有关该包的更多信息。
本文总阅读量次