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'를 사용하도록 코드를 갱신했다. –