sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan man ændrer kolonnetype fra tegn, der varierer til heltal ved hjælp af sqlalchemy-migrer

Det ser ud til, at sqlalchemy.migrate ikke understøtter gengivelse af gyldig forespørgsel i tilfælde af ændring fra String til Integer kolonnetyper for postgresql.

I dit tilfælde ville jeg implementere det som en direkte udførelse af forespørgsler og gå videre.

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 migrering fra streng til heltal kan mislykkes af forskellige årsager - når kolonneværdien ville indeholde en eller anden værdi, der ikke kan konverteres til tal. Så jeg ville tilføje noget ekstra validering i applikationslogikken for at holde nedgraderingsmigrering mulig senere.




  1. ORACLE - ORA-01843:ikke en gyldig måned

  2. Underforespørgsler og multitabeller

  3. Konfiguration af AlwaysOn Availability Groups på SQL Server

  4. Udføre flere laravel alter tabel migration forespørgsler i én?