SpecialistOff.NET / Вопросы / Статьи / Фрагменты кода / Резюме / Метки / Помощь / Файлы

Назад

Руководство по Alembic


Метки: python alembic sql postgresql mysql

Описание

Alembic - инструмент, использующий SQLAlchemy в качестве движка, для управления базой данных как на уровне SQL запросов, так и с помощью сценариев. Хорошо подходит для миграций и версионирования.

Инициализация

cd yourproject
alembic init src/app/alembic

В файле alembic.ini указываем путь до файла базы данных sqlite3

sqlalchemy.url = sqlite:////home/USERNAME/app/data/db.sqlite3

Автогенерация

Открываем файл env.py и ищем строку:

target_metadata = None

Изменяем её на:

# Импорт вышестоящего каталога
import os
import sys
sys.path.insert(0, '/'.join(os.path.dirname(os.path.abspath(__file__)).split('/')[:-1]))

from myapp.mymodel import Base
target_metadata = Base.metadata

где:

alembic revision --autogenerate -m "Структура БД"

Создание структуры БД

alembic upgrade head

SQL

Выдаёт сырой SQL код

alembic upgrade head --sql

Добавление нового изменения

alembic revision -m "Add a column"

Показ истории

alembic -c alembic.ini history

Проблемы

Проблема кодировки в файле alembic/script.py.mako

mako.exceptions.CompileException: Unicode decode operation of encoding 'ascii' failed in file 'alembic/script.py.mako' at
line: 0 char: 0

Добавить в alembic/script.py.mako первой строкой

# -*- coding: UTF-8 -*-