"""add missing columns if users table exists without them Revision ID: 003 Revises: 002 Create Date: 2025-02-05 """ from typing import Sequence, Union from alembic import op import sqlalchemy as sa revision: str = "003" down_revision: Union[str, None] = "002" branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: # 检查 users 表是否存在 role 列,若不存在则添加 conn = op.get_bind() inspector = sa.inspect(conn) columns = [c["name"] for c in inspector.get_columns("users")] if inspector.has_table("users") else [] if "users" in inspector.get_table_names(): if "role" not in columns: op.add_column("users", sa.Column("role", sa.String(32), nullable=False, server_default="admin")) if "is_active" not in columns: op.add_column("users", sa.Column("is_active", sa.Boolean(), nullable=False, server_default="true")) if "created_at" not in columns: op.add_column("users", sa.Column("created_at", sa.DateTime(timezone=True), server_default=sa.func.now(), nullable=True)) def downgrade() -> None: # 可选:移除这些列(通常不需要) pass