понедельник, 13 мая 2024 г.

Python. Использование модуля mariadb.

Для работы с Mariadb в скриптах python можно использовать модуль python mariadb.

Установку данного модуля необходимо проводить, если в системе уже установлен python3 и mariadb.

Перед установкой самого модуля нужно установить рекомендованные пакеты:
# sudo yum install pip
# sudo yum install python3-devel
# sudo yum install openssl


Затем необходимо установить репозитарий "CS Package Repository"
# wget https://r.mariadb.com/downloads/mariadb_repo_setup
# sudo ./mariadb_repo_setup


Из установленного репозитария, установить драйвер «MariaDB Connector/C»
# sudo yum install MariaDB-shared MariaDB-devel

Теперь можно наконец-то установить сам модуль mariadb:
# pip install mariadb

Скрипт установки репозитария можно удалить:
# rm -f mariadb_repo_setup


Для использования модуля mariadb файл
import mariadb
import sys


# Установка соединения:
try:
    conn = mariadb.connect(
        host="10.10.10.1",
        port=3306,
        user="user1",
        password="password1",
        database="db1")
        cur = conn.cursor()
    except mariadb.Error as e:
        print(f"Error connecting to the database: {e}")
        sys.exit(1)


# Запрос данных:
try:
    cur.execute("SELECT ids, ne_name FROM nes LIMIT 10")
except mariadb.Error as e:
    print(f"Error: {e}")


# Вывод данных:
for ids, ne_name in cur:
    print(f"ids: {ids}, ne_name: {ne_name}")

"""
Вывод будет в таком виде:
ids: 14, ne_name: SMA-UKGD-R1
ids: 15, ne_name: SMA-UKGD-S1
ids: 16, ne_name: SMA-Avr150-S1
...
"""


print(cur.fetchall())
"""
Вывод будет в таком виде:
[(14, 'SMA-UKGD-R1'), (15, 'SMA-UKGD-S1'), (16, 'SMA-Avr150-S1')...]
"""


Вывод данных в виде ассоциативного массива:
cur = conn.cursor(dictionary=True)
try:
    cur.execute("SELECT ids, ne_name FROM nes LIMIT 10")
except mariadb.Error as e:
    print(f"Error: {e}")
result = cur.fetchall()
for x in result:
    print(x)

"""
Вывод будет в таком виде:
{'ids': 14, 'ne_name': 'SMA-UKGD-R1'}
{'ids': 15, 'ne_name': 'SMA-UKGD-S1'}
{'ids': 16, 'ne_name': 'SMA-Avr150-S1'}
...
"""


# Закрытие соединения
conn.close()

Комментариев нет:

Отправить комментарий