Merge pull request #5407 from cddjr/fix_db

This commit is contained in:
jxxghp
2026-01-24 06:45:54 +08:00
committed by GitHub
+25 -18
View File
@@ -6,8 +6,9 @@ Create Date: 2026-01-13 13:02:41.614029
""" """
from app.db import ScopedSession from alembic import op
from app.db.models.systemconfig import SystemConfig from sqlalchemy import text
from app.log import logger from app.log import logger
# revision identifiers, used by Alembic. # revision identifiers, used by Alembic.
@@ -19,22 +20,28 @@ depends_on = None
def upgrade() -> None: def upgrade() -> None:
# systemconfig表 去重 # systemconfig表 去重
with ScopedSession() as db: connection = op.get_bind()
try:
seen_keys = set() select_stmt = text(
# 按ID降序查询,以便保留最新的配置 """
for item in db.query(SystemConfig).order_by(SystemConfig.id.desc()).all(): SELECT id, key, value
if item.key in seen_keys: FROM SystemConfig
logger.warn( WHERE id NOT IN (
f"已删除重复的SystemConfig项:{item.key} 值:{item.value}" SELECT MAX(id)
) FROM SystemConfig
db.delete(item) GROUP BY key
else: )
seen_keys.add(item.key) """
db.commit() )
except Exception as e: to_delete = connection.execute(select_stmt).fetchall()
logger.error(e) for row in to_delete:
db.rollback() logger.warn(
f"已删除重复的 SystemConfig 项:key={row.key}, value={row.value}, id={row.id}"
)
delete_stmt = text("DELETE FROM SystemConfig WHERE id = :id")
connection.execute(delete_stmt, {"id": row.id})
logger.info("SystemConfig 表去重操作已完成。")
def downgrade() -> None: def downgrade() -> None: