mariadb, mysql-connector-python, pymysql
Дуже хороше питання — воно насправді важливе, якщо ти хочеш зрозуміти, який драйвер дає кращу сумісність, продуктивність і стабільність при роботі з MySQL/MariaDB. Розберімо по пунктах:
1. mysql-connector-python
Розробник: Oracle Ліцензія: GPLv2 Офіційний драйвер для MySQL
Переваги:
✅ Офіційна підтримка Oracle — тобто повна сумісність з MySQL і регулярні оновлення.
✅ Pure Python або C-розширення — можна вибрати версію (pure Python — кросплатформенна, C — швидша).
✅ Підтримує prepared statements, transactions, connection pooling.
✅ Сумісність з MySQL 8.x — включаючи нові фічі (наприклад, authentication plugins).
Недоліки:
❌ Повільніший у деяких випадках, ніж PyMySQL (через офіційну, але "важку" реалізацію).
❌ Може мати дрібні несумісності з MariaDB (через фічі MySQL 8, яких немає в MariaDB).
2. PyMySQL
Розробник: Спільнота (open-source) Ліцензія: MIT Реалізований повністю на Python
Переваги:
✅ Простий, легкий, чисто на Python (немає потреби в компіляції C-модулів).
✅ Працює і з MySQL, і з MariaDB — сумісність дуже висока.
✅ Добре інтегрується з ORM-ами типу SQLAlchemy.
✅ MIT-ліцензія — простіша для комерційного використання.
Недоліки:
❌ Повільніший за драйвери з C-розширеннями (mysqlclient чи mysql-connector C).
❌ Іноді відстає у підтримці нових фіч MySQL 8.x.
3. MariaDB — чи має свій драйвер?
Так, має!
Називається mariadb (Python package: mariadb).
Розробник: MariaDB Corporation Ліцензія: LGPL Реалізація: C API + Python bindings
Переваги:
✅ Офіційна підтримка MariaDB (найкраща сумісність).
✅ Найвища швидкість серед трьох (бо написаний на C).
✅ Підтримка всіх MariaDB-специфічних фіч (наприклад, system versioned tables, plugin auth).
✅ Добре працює з MariaDB 10.x і вище.
Недоліки:
❌ Потрібна C-бібліотека libmariadb у системі (не pure Python).
❌ Трохи складніше встановлювати, ніж PyMySQL.
❌ Може не підтримувати всі MySQL-специфічні фічі (якщо база — чистий MySQL 8).
4. Коротке порівняння
mysql-connector-python
Oracle
Python/C
Середня
Часткова
Повна
GPLv2
PyMySQL
Спільнота
Pure Python
Нижча
Висока
Висока (але не всі фічі)
MIT
mariadb
MariaDB Corp.
C + Python
Висока
Ідеальна
Часткова
LGPL
Рекомендація:
Якщо твоя база MariaDB — краще
mariadb, офіційний драйвер.Якщо хочеш максимально просту установку і кросплатформеність —
PyMySQL.Якщо база MySQL 8 і потрібна повна підтримка його нових фіч —
mysql-connector-python.
Добре. Якщо в тебе MariaDB, то найкраще рішення — офіційний драйвер mariadb (розроблений MariaDB Corporation). Розпишу по порядку: встановлення → підключення → використання → важливі нюанси.
1. Встановлення
Спочатку потрібна системна бібліотека libmariadb (вона входить до пакету клієнтських утиліт MariaDB).
Ubuntu / Debian:
Потім ставимо сам Python-драйвер:
2. Перевірка встановлення
Якщо він виведе коротку довідку — значить усе нормально.
3. Підключення до бази
4. Вставка та транзакції
Зверни увагу: замість
%s, як у MySQLdb чи PyMySQL, тут використовуються знаки питання?у prepared statements.
5. Закриття з’єднання
6. Основні особливості mariadb-драйвера
Prepared Statements
✅
Connection Pooling
✅
Transactions
✅
SSL-з’єднання
✅
Cursor iteration
✅
MariaDB Authentication Plugins
✅
MySQL 8 Authentication
⚠️ Частково
Async I/O
❌ (поки що немає офіційної async підтримки)
7. Connection Pool (опціонально)
Це корисно для вебсайтів — не відкривати нове з’єднання на кожен запит.
8. Збірка без sudo (якщо на сервері без root)
Якщо ти не можеш ставити системні бібліотеки:
але це спрацює тільки якщо є готовий wheel для твоєї платформи. Інакше доведеться зібрати вручну (тоді потрібен libmariadb-dev).
9. Порада для CGI або невеликих сайтів
Оскільки у тебе сайт на чистому Python (CGI), не використовуй постійний пул, бо CGI запускає процес окремо для кожного запиту. Просто відкривай і закривай з’єднання в кожному запиті (це безпечно для низького навантаження).
Хочеш, я покажу приклад інтеграції з твоїм CGI-сценарієм (щоб прямо на сайті виконати SQL-запит)?
Last updated