sql >> Database >  >> RDS >> PostgreSQL

Hoe het kolomtype te veranderen van karaktervarierend naar geheel getal met behulp van sqlalchemy-migrate

Het lijkt erop dat sqlalchemy.migrate geen ondersteuning biedt voor het weergeven van geldige query's in het geval van wijziging van kolomtypen String naar Integer voor postgresql.

In jouw geval zou ik het implementeren als een directe query-uitvoering en verder gaan.

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')

BTW migreren van String naar Integer kan om verschillende redenen mislukken - wanneer de kolomwaarde een waarde zou bevatten die niet naar een getal kan worden geconverteerd. Dus ik zou wat extra validatie toevoegen aan de applicatielogica om downgrademigratie later mogelijk te houden.




  1. Meerdere selectievakjes opgeslagen in een enkel veld in een database

  2. PHP / MySQL bouwboommenu

  3. Alternatief voor NOT IN op MySQL

  4. Hoe UUID in de RAW (16) kolom in te voegen