Управление схемами и миграция с помощью SQLAlchemy и Alembic
Это руководство описывает, ка к управлять схемами Selena с использованием экосистемы Python — включая SQLAlchemy, Alembic и sqlacodegen — через диалект selena SQLAlchemy. Оно помогает понять, почему миграция схем полезна и как эффективно использовать её с Selena.
Обзор
Многие пользователи управляют таблицами, представлениями и материализованными представлениями Selena напрямую с помощью SQL DDL. Однако по мере роста проектов ручное сопровождение операторов ALTER TABLE становится подверженным ошибкам и сложным для отслеживания.
Диалект Selena SQLAlchemy (selena) предоставляет:
- Полноценный слой моделей SQLAlchemy для таблиц, представлений и материализованных представлений Selena
- Декларативные определения для схем таблиц и свойств таблиц (включая представления и материализованные представления)
- Интеграцию с Alembic для автоматического обнаружения и генерации изменений схемы
- Совместимость с инструментами типа sqlacodegen для обратной генерации моделей
Это позволяет пользователям Python поддерживать схемы Selena декларативным, версионируемым и автоматизированным способом.
Ключевые преимущества
Хотя миграция схем традиционно ассоциируется с OLTP базами данных, она также ценна в системах хранилищ данных, таких как Selena. Команды используют Alembic вместе с диалектом Selena благодаря преимуществам, перечисленным ниже.
Декларативное определение схемы
После того как вы определите схему в моделях Python ORM или в стиле SQLAlchemy core, вам больше не требуется вручную писать операторы ALTER TABLE.
Автоматическое сравнение и автогенерация
Alembic сравнивает текущую схему Selena с вашими моделями SQLAlchemy и автоматически генерирует скрипты миграции (CREATE/DROP/ALTER).
Проверяемые, версионируемые миграции
Каждое изменение схемы становится файлом миграции (Python), поэтому пользователи могут отслеживать изменения и откатывать их при необходимости.
Единообразный workflow для всех окружений
Изменения схемы можно применять к development, staging и production с использованием одного и того же процесса.
Установка и подключение
Предварительные требования**
- Python-клиент Selena: 1.3.2 или новее
SQLAlchemy: 1.4 или новее (рекомендуется SQLAlchemy 2.0; требуется для использованияsqlacodegen)Alembic: 1.16 или новее