MySQL.¶
Метод logfire.instrument_mysql() может быть использован для обнаружения MySQL Connector/Python с помощью драйвера базы данныхLogfire, чтобы создать диапазон для каждого запроса.
Монтаж¶
Установите logfire с помощью mysql extra:
{{ install_logfire(extras=['mysql']) }}
Использование¶
Давайте настроить базу данных MySQL с помощью Docker и запустим скрипт Python, который подключается к базе данных с помощью разъема MySQL, чтобы показать, как использоватьLogfireс MySQL.
¶
Настройка базы данных MySQL с помощью Docker
Во-первых, нам нужно инициализировать базу данных 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Составьте порт 3306 в Docker в порт 3306 на хосте. -
-d mysqlЗапустите контейнер в фоновом режиме и распечатайте идентификатор контейнера. Изображение:«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 Instrument Пакет, вы можете Здесь. Найдите дополнительную информацию об этом пакете.
本文总阅读量次