2
私は、データベースに欠けていたいくつかのDBインデックスを作成するAlembicの移行を行っています。例:DBインデックスが存在しない場合に作成する
op.create_index(op.f('ix_some_index'), 'table_1', ['column_1'], unique=False)
しかし、移行がすでにインデックスを持っている他の環境で失敗します。
sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) relation "ix_some_index" already exists
PostgreSQLは、このようなケースのためにIF NOT EXISTS
オプションをサポートしていますが、私は呼び出しのどのような方法が表示されませんAlembicまたはSQLAlchemyのいずれかのオプションを使用します。既存のインデックスを確認する標準的な方法はありますか?
それはまた、正しいスキーマのチェックとテーブルが容易になるだろう 'pg_class'(の代わりに' pg_indexes'を使用するかに良いだろう)。 pg_classを使うときは、 'reltype = 0'の代わりに' relkind = 'i''を使うのが良いでしょう。 –
@a_horse_with_no_nameありがとう、私は 'pg_indexes'を使うようにコードを更新しました。 –