Миграция Базы данных в проектах Python – это один их способов сделать работу проще. В Python-проектах, особенно при работе с ORM, важно уметь работать с миграциями в обе стороны:
Помогают с этим библиотеки SQLAlchemy и Alembic.
Qlacodegen -инструмент, который считывает структуру существующей базы данных и генерирует соответствующую модель SQLAlchemy
pip install sqlacodegen Дальше просто запустить простой код
sqlacodegen postgresql://user:password@localhost:5432/dbname > models.py где postgresql://user:password@localhost:5432/dbname – путь к вашей БД, в данном случае Postgres
Alembic – это инстумент для работы с миграциями для SQLAlchemy
pip install alembic
Для начала работы нужно инициализировать Alembic в папке проекта
alembic init alembic
# Или если вы работаете с БД асинхронно
alembic init -t async alembic У вас в проекта появится папка alembic и файд alembic.ini
В alembic.ini указываем строку подключения к БД.
sqlalchemy.url = postgresql+psycopg2://user:password@localhost:5432/dbname В alembic/env.py добавляем подключение моделей. Где бы не инициалищировался у ва Base добавляйте его обязетельно с файла, где расположены модели (иначе alembic не увидит модели и миграция не получится)
from models import Base # путь к вашим моделям
target_metadata = Base.metadata
Теперь для обновления БД, если Вы что-то изменили в моделях, достаточно запустить
alembic revision --autogenerate -m "Added new fields"
alembic upgrade head
Alembic сравнит Base.metadata и структуру БД, создаст нужный скрипт и применит его.
🧩 Итого
| Направление | Инструмент | Команда |
|---|---|---|
| БД → модели | sqlacodegen | sqlacodegen URI --outfile=models.py |
| Модели → БД | alembic + metadata | alembic revision --autogenerate, затем alembic upgrade head |
alembic init alembic_admin
alembic init alembic_user
Это создаст две независимые папки alembic_admin/ и alembic_user/, каждая со своей alembic.ini.
Потом нужно править каждый alembic.ini:
alembic_admin.ini → строка подключения к первой БДalembic_user.ini → строка подключения ко второй БДИ в env.py каждой директории настраиваешь свой target_metadata:
Если при открытие csv файла с помощью excel У все поехали ячейки - это простой… Read More
Простые шаги как происходит Загрузка проекта на Github и Автодеплой на сервер Сделайте работу проще! Read More
Миграция базы данных - помогают с этим библиотеки SQLAlchemy и Alembic. Read More
Основные Команды Git, которые точно пригодятся. Сохрани себе шпаргалку Git Read More
Установка PostgreSQL на сервер Read More
Как создать PrimaryKey в талице базы данных SQL [РЕШЕНО] Ошибка relation tablename_id_seq doesn't exist Read More