PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да промените типа на колоната от знак, вариращ до цяло число, като използвате sqlalchemy-migrate

Изглежда, че sqlalchemy.migrate няма поддръжка за рендиране на валидна заявка в случай на промяна от типове колони String на Integer за postgresql.

Във вашия случай бих го приложил като директно изпълнение на заявка и бих продължил.

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

Между другото мигрирането от String към Integer може да се провали по различни причини - когато стойността на колоната би съдържала някаква стойност, която не може да бъде преобразувана в число. Така че бих добавил допълнително валидиране в логиката на приложението, за да запазя възможна миграция към по-ниска версия по-късно.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Създаване на персонализиран оператор за равенство за тип PostgreSQL (точка) за DISTINCT извиквания

  2. Индексът не се използва, когато LIMIT се използва в postgres

  3. Създайте динамична заявка за актуализиране в psycopg2

  4. Когато извиквам DB::select защо получавам съобщение Връзката е нулирана?

  5. Връзката с postgres от typescript увисва