fix alembic migration

This commit is contained in:
Kevin
2026-05-19 16:40:45 +08:00
parent 6d281c92a5
commit 544cc68106
11 changed files with 384 additions and 4 deletions

View File

@@ -0,0 +1,34 @@
"""Alembic 迁移共享工具(仅用于 versions/ 下的迁移脚本)。"""
from __future__ import annotations
import sqlalchemy as sa
from alembic import op
def table_exists(table_name: str) -> bool:
bind = op.get_bind()
return table_name in sa.inspect(bind).get_table_names()
def has_column(table_name: str, column_name: str) -> bool:
if not table_exists(table_name):
return False
bind = op.get_bind()
columns = sa.inspect(bind).get_columns(table_name)
return any(column["name"] == column_name for column in columns)
def add_column_if_missing(table_name: str, column: sa.Column) -> bool:
"""若列不存在则 add_column返回是否执行了添加。"""
if has_column(table_name, column.name):
return False
op.add_column(table_name, column)
return True
def drop_column_if_exists(table_name: str, column_name: str) -> bool:
if not has_column(table_name, column_name):
return False
op.drop_column(table_name, column_name)
return True