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
Lees meer
Alembic SQLAlchemy
Recent
- Database UUID primaire sleutels van je webapplicatie verbergen
- Don't Repeat Yourself (DRY) met Jinja2
- SQLAlchemy, PostgreSQL, maximum aantal rijen per user
- Toon de waarden in SQLAlchemy dynamische filters
- Veilige gegevensoverdracht met Public Key versleuteling en pyNaCl
- rqlite: een alternatief voor SQLite met hoge beschikbaarheid en distributed
Meest bekeken
- Met behulp van Python's pyOpenSSL om SSL-certificaten die van een host zijn gedownload te controleren
- Gebruik van UUIDs in plaats van Integer Autoincrement Primary Keys met SQLAlchemy en MariaDb
- Maak verbinding met een dienst op een Docker host vanaf een Docker container
- PyInstaller en Cython gebruiken om een Python executable te maken
- SQLAlchemy: Gebruik van Cascade Deletes om verwante objecten te verwijderen
- Flask RESTful API verzoekparametervalidatie met Marshmallow-schema's