Заставить Alembic обнаруживать изменения типа столбцов и изменять длину строковых полей
Автоматическое обнаружение не обнаруживает изменения типа столбцов по умолчанию. Вы должны включить его, отредактировав файл alembic/env.py.
По умолчанию Alembic не изменяет длину строковых полей, я заметил это после изменения строкового поля:
description = Column(String(150), server_default='')
к..:
description = Column(String(250), server_default='')
Никаких изменений не произошло.
Похоже, что по умолчанию функция определения смены типа столбцов отключена, поэтому вы можете сначала проверить ее, а затем включить ее, добавив в контекст 'comp_type=True'.
Отредактируйте файл alembic/env.py и добавьте 'comp_type=True' в двух местах:
def run_migrations_offline():
...
context.configure(
url=url, target_metadata=target_metadata, literal_binds=True,
compare_type=True # <--- here
)
...
def run_migrations_online():
...
with connectable.connect() as connection:
context.configure(
connection=connection,
target_metadata=target_metadata,
compare_type=True # <--- here
)
...
Теперь изменения типа столбцов будут обнаружены и корректно перенесены.
Ссылки / кредиты
Alembic - migration for String length change
https://eshlox.net/2017/08/06/alembic-migration-for-string-length-change
Auto Generating Migrations
https://alembic.sqlalchemy.org/en/latest/autogenerate.html#what-does-autogenerate-detect-and-what-does-it-not-detect
Подробнее
Alembic SQLAlchemy
Недавний
- Скрытие первичных ключей базы данных UUID вашего веб-приложения
- Don't Repeat Yourself (DRY) с Jinja2
- SQLAlchemy, PostgreSQL, максимальное количество строк для user
- Показать значения в динамических фильтрах SQLAlchemy
- Безопасная передача данных с помощью шифрования Public Key и pyNaCl
- rqlite: альтернатива dist с высокой степенью готовности и SQLite
Большинство просмотренных
- Используя Python pyOpenSSL для проверки SSL-сертификатов, загруженных с хоста
- Использование UUID вместо Integer Autoincrement Primary Keys с SQLAlchemy и MariaDb
- Использование PyInstaller и Cython для создания исполняемого файла Python
- Подключение к службе на хосте Docker из контейнера Docker
- SQLAlchemy: Использование Cascade Deletes для удаления связанных объектов
- Flask Удовлетворительный запрос API проверка параметров запроса с помощью схем Маршмэллоу