default : sqlalchemy 단에서 default값을 관리해줌 server_default : db 단에서 default 값을 관리해줌. created_at은 server_default date.now로 넣었고, user의 register_token은 secrets.token_urlsafe(32) 로 default로 넣음.

alembic에서 default로 할때 기존에 존재하던 row들에 대해서 값을 적용해주는 방법

    op.add_column('user', sa.Column('register_token', sa.String(), nullable=True))
    op.add_column('user', sa.Column('supabase_sub', sa.String(), nullable=True))
    op.create_unique_constraint(None, 'user', ['supabase_sub'])
    op.create_unique_constraint(None, 'user', ['register_token'])
     # Get a connection and a session
    bind = op.get_bind()
    session = Session(bind=bind)
 
    # Iterate through existing rows and update the register_token
    users = session.execute(sa.text('''SELECT id FROM "user"''')).fetchall()
    for user in users:
        token = get_random_token()
        session.execute(
            sa.text('''UPDATE "user" SET register_token = :token WHERE id = :id'''),
            {'token': token, 'id': user.id}
        )
 
    # Commit the session to apply the changes
    session.commit()
    # ### end Alembic commands ###
 

postgresql 볼륨 restore

docker exec -i postgres pg_restore -U postgres -d mydb /dump.sql