sql >> Databáze >  >> RDS >> PostgreSQL

Jak změnit typ sloupce z proměnného znaku na celé číslo pomocí sqlalchemy-migrate

Vypadá to, že sqlalchemy.migrate nemá podporu pro vykreslování platného dotazu v případě změny typu sloupců String na Integer pro postgresql.

Ve vašem případě bych to implementoval jako přímé provádění dotazu a pokračoval.

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 migrace z String na Integer může selhat z různých důvodů – když by hodnota sloupce obsahovala nějakou hodnotu, kterou nelze převést na číslo. Takže bych přidal nějaké další ověření do aplikační logiky, aby byla později možná migrace na nižší verzi.




  1. Postgres – Stáhněte si kopii celé DB ze vzdáleného serveru na místní dev stroj

  2. Převést rekurzivní funkci na zobrazení

  3. DBMS_SCHEDULER.DROP_JOB, pouze pokud existuje

  4. Skryté vlastnosti PostgreSQL