跳到主要内容

数据库迁移

学习如何在 Wegent 中管理数据库迁移。

概述

Wegent 使用 Alembic 进行数据库迁移。迁移会跟踪数据库模式随时间的变化。

迁移命令

创建迁移

wegent db migrate -m "Add user table"

应用迁移

wegent db upgrade

回滚

wegent db downgrade -1

检查状态

wegent db status

编写迁移

自动生成迁移

Alembic 可以根据模型更改自动生成迁移:

wegent db migrate --autogenerate -m "Add email field"

手动迁移

创建手动迁移:

"""Add user preferences table

Revision ID: abc123
Create Date: 2024-01-01
"""

from alembic import op
import sqlalchemy as sa

def upgrade():
op.create_table(
'user_preferences',
sa.Column('id', sa.Integer, primary_key=True),
sa.Column('user_id', sa.Integer, sa.ForeignKey('users.id')),
sa.Column('theme', sa.String(50)),
sa.Column('language', sa.String(10))
)

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

最佳实践

  • 始终审查自动生成的迁移
  • 在生产数据副本上测试迁移
  • 保持迁移小而专注
  • 同时包含 upgrade 和 downgrade 函数
  • 迁移部署后切勿修改已有迁移