PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

So ändern Sie den Spaltentyp mit sqlalchemy-migrate von Zeichenvariable zu Ganzzahl

Sieht so aus, als hätte sqlalchemy.migrate keine Unterstützung für das Rendern gültiger Abfragen, wenn für postgresql von String- zu Integer-Spaltentypen gewechselt wird.

In Ihrem Fall würde ich es als direkte Abfrageausführung implementieren und weitermachen.

def downgrade(migrate_engine):
    # ALTER TABLE courses ALTER COLUMN number SET DATA TYPE integer;
    migrate_engine.execute('ALTER TABLE courses ALTER COLUMN number TYPE INTEGER USING number::numeric')

Übrigens kann die Migration von String zu Integer aus verschiedenen Gründen fehlschlagen - wenn der Spaltenwert einen Wert enthalten würde, der nicht in eine Zahl konvertiert werden kann. Daher würde ich der Anwendungslogik eine zusätzliche Validierung hinzufügen, um eine spätere Downgrade-Migration zu ermöglichen.