Develop/FastAPI

FastAPI Alembic new 테이블 및 외래키 생성(Upgrade / Downgrade) - 71

동석해요 2023. 1. 22. 20:48
728x90
SMALL
alembic을 통한 address 테이블 생성 및 외래키 설정을 위한 칼럼 추가

 

1. 테이블 추가를 위한 새로운 버전 생성

 

2. 버전의 upgrade / downgrade 함수 수정

def upgrade():
    op.create_table('address',
                    sa.Column('id', sa.Integer(), nullable=False, primary_key=True),
                    sa.Column('address1', sa.String(), nullable=False),
                    sa.Column('address2', sa.String(), nullable=False),
                    sa.Column('city', sa.String(), nullable=False),
                    sa.Column('state', sa.String(), nullable=False),
                    sa.Column('country', sa.String(), nullable=False),
                    sa.Column('postalcode', sa.String(), nullable=False)
                    )


def downgrade():
    op.drop_table('address')

 

3. alembic을 통한 테이블 생성

PostgreSQL 확인

 

4. 컬럼 추가를 위한 새로운 버전 생성

 

5. 버전의 upgrade / downgrade 함수 수정

def upgrade():
    op.add_column('users', sa.Column('address_id', sa.Integer(), nullable=True))
    op.create_foreign_key('address_users_fk', source_table="users", referent_table="address",
                          local_cols=['address_id'], remote_cols=['id'], ondelete="CASCADE")                          

def downgrade():
    op.drop_constraint("address_users_fk", table_name="users")
    op.drop_column('users', 'address_id')
옵션 설명
souce_table foreign_key 소스 테이블
referent_table foreign_key 참조 테이블
local_cols users 테이블 address_id
remote_cols address 테이블 id
ondelete CASCADE - reference값은 삭제되면서 참조무결성을 유지

 

6. alembic을 통한 외래키 생성

 

7. 외래키 확인

Properties -> Constraints -> Foreign Key

728x90
SMALL