Maak Alembic kolomtypewijzigingen detecteren en de lengte van de tekenreeksenvelden wijzigen
Auto Detect detecteert standaard geen kolomtypewijzigingen. U moet dit aanzetten door het alembic/env.py bestand aan te passen.
Standaard verandert Alembic de lengte van de stringvelden niet, dit viel me op na het veranderen van een stringveld van:
description = Column(String(150), server_default='')
aan:
description = Column(String(250), server_default='')
Er zijn geen wijzigingen aangebracht.
Het blijkt dat de detectie van kolomtype verandering standaard uitgeschakeld is, zodat u het eerst kunt testen, en kan worden ingeschakeld door 'compare_type=True' toe te voegen aan de context.
Bewerk het bestand alembic/env.py en voeg op twee plaatsen 'compare_type=True' toe:
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
)
...
Nu worden de wijzigingen in het kolomtype gedetecteerd en op de juiste manier gemigreerd.
Links / credits
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
Meest bekeken:
- Flask site penetration tests: security headers en de session cookie
- Flask meertalige verwerking, overschakeling en de 404 pagina Niet gevonden uitzondering
- Flask + SQLAlchemy + MariaDB profilering
- Hoe de tijdzone in te stellen bij gebruik van de Python Alpine Docker image
- Python Flask app aan Docker in ISPConfig3 met Nginx - deel 1: Minimale app
- SQLAlchemy datetime berekeningen aan de serverzijde