Alembic erkennt Spaltentypänderungen und ändert die Länge von Zeichenkettenfeldern.
Die automatische Erkennung erkennt standardmäßig keine Spaltentypänderungen. Sie müssen dies einschalten, indem Sie die Datei alembic/env.py bearbeiten.
Standardmäßig ändert Alembic nicht die Länge der Zeichenkettenfelder, was mir nach der Änderung eines Zeichenkettenfeldes von aufgefallen ist:
description = Column(String(150), server_default='')
zu:
description = Column(String(250), server_default='')
Es wurden keine Änderungen vorgenommen.
Es scheint, dass die Erkennung von Spaltentypänderungen standardmäßig deaktiviert ist, so dass Sie sie zuerst testen können und durch Hinzufügen von'compare_type=True' zum Kontext eingeschaltet werden können.
Bearbeiten Sie die Datei alembic/env.py und fügen Sie'compare_type=True' an zwei Stellen hinzu:
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
)
...
Nun werden die Änderungen des Spaltentyps erkannt und korrekt migriert.
Links / Impressum
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
Mehr erfahren
Alembic SQLAlchemy
Neueste
- Ausblenden der Primärschlüssel der Datenbank UUID Ihrer Webanwendung
- Don't Repeat Yourself (DRY) mit Jinja2
- SQLAlchemy, PostgreSQL, maximale Anzahl von Zeilen pro user
- Anzeige der Werte in den dynamischen Filtern SQLAlchemy
- Sichere Datenübertragung mit Public Key Verschlüsselung und pyNaCl
- rqlite: eine hochverfügbare und distverteilte SQLite -Alternative
Meistgesehen
- Verwendung von Pythons pyOpenSSL zur Überprüfung von SSL-Zertifikaten, die von einem Host heruntergeladen wurden
- Verwendung von UUIDs anstelle von Integer Autoincrement Primary Keys mit SQLAlchemy und MariaDb
- Verbindung zu einem Dienst auf einem Docker -Host von einem Docker -Container aus
- PyInstaller und Cython verwenden, um eine ausführbare Python-Datei zu erstellen
- SQLAlchemy: Verwendung von Cascade Deletes zum Löschen verwandter Objekte
- Flask RESTful API Validierung von Anfrageparametern mit Marshmallow-Schemas