Есть ли универсальный модуль Python для работы с разными базами данных (mysql, postgresql, …)?

Да, в Python есть несколько пакетов, которые предоставляют универсальный интерфейс для работы с разными базами данных. Один из самых популярных таких пакетов - это SQLAlchemy.

SQLAlchemy - это ORM (Object Relational Mapping) библиотека, которая предоставляет абстракцию базы данных, позволяющую работать с разными базами данных, такими как MySQL, PostgreSQL, SQLite, Oracle и др., используя унифицированный API. Она позволяет создавать таблицы, выполнять запросы, вставку, обновление и удаление данных, а также работать с транзакциями.

Основная концепция SQLAlchemy - это разделение модели базы данных (моделей данных и таблиц) от способа связи с конкретной базой данных. SQLAlchemy предоставляет набор классов и методов, которые позволяют описывать модели данных и их отношения, а затем использовать эти модели для создания таблиц в разных базах данных.

Например, для работы с MySQL в SQLAlchemy можно использовать драйвер mysql-connector-python или pymysql. Для работы с PostgreSQL есть драйвер psycopg2 или psycopg2-binary. При установке SQLAlchemy они могут быть включены в зависимости, либо их можно установить отдельно.

Пример использования SQLAlchemy для работы с базой данных MySQL:

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base

# Создаем подключение к базе данных MySQL
engine = create_engine('mysql+mysqlconnector://user:password@localhost/mydb')

# Создаем базовый класс моделей данных
Base = declarative_base()

# Определяем модель данных и таблицу
class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String(50))
    email = Column(String(50))

# Создаем таблицы
Base.metadata.create_all(engine)

# Создаем сессию для работы с базой данных
Session = sessionmaker(bind=engine)
session = Session()

# Выполняем запросы к базе данных
user = User(name='John Doe', email='[email protected]')
session.add(user)
session.commit()

users = session.query(User).filter_by(name='John Doe').all()
for user in users:
    print(user.name, user.email)

# Закрываем сессию
session.close()

Как видно из примера, SQLAlchemy позволяет описывать модели данных как классы, определять структуру таблиц, выполнять запросы к базе данных и управлять транзакциями. Это делает SQLAlchemy мощным инструментом для универсальной работы с разными базами данных в Python.