From 08c448ee3024658b5ab0710ff8f3900a192af87f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=99=AF=E5=A4=A7=E4=BE=A0?= Date: Sat, 24 Jan 2026 02:09:52 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20=E8=BF=81=E7=A7=BBPG?= =?UTF-8?q?=E5=90=8E=E5=8F=AF=E8=83=BD=E5=8D=A1=E5=90=AF=E5=8A=A8=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- database/versions/41ef1dd7467c_2_2_2.py | 43 ++++++++++++++----------- 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/database/versions/41ef1dd7467c_2_2_2.py b/database/versions/41ef1dd7467c_2_2_2.py index eea81c09..b3088ef9 100644 --- a/database/versions/41ef1dd7467c_2_2_2.py +++ b/database/versions/41ef1dd7467c_2_2_2.py @@ -6,8 +6,9 @@ Create Date: 2026-01-13 13:02:41.614029 """ -from app.db import ScopedSession -from app.db.models.systemconfig import SystemConfig +from alembic import op +from sqlalchemy import text + from app.log import logger # revision identifiers, used by Alembic. @@ -19,22 +20,28 @@ depends_on = None def upgrade() -> None: # systemconfig表 去重 - with ScopedSession() as db: - try: - seen_keys = set() - # 按ID降序查询,以便保留最新的配置 - for item in db.query(SystemConfig).order_by(SystemConfig.id.desc()).all(): - if item.key in seen_keys: - logger.warn( - f"已删除重复的SystemConfig项:{item.key} 值:{item.value}" - ) - db.delete(item) - else: - seen_keys.add(item.key) - db.commit() - except Exception as e: - logger.error(e) - db.rollback() + connection = op.get_bind() + + select_stmt = text( + """ + SELECT id, key, value + FROM SystemConfig + WHERE id NOT IN ( + SELECT MAX(id) + FROM SystemConfig + GROUP BY key + ) + """ + ) + to_delete = connection.execute(select_stmt).fetchall() + for row in to_delete: + logger.warn( + f"已删除重复的 SystemConfig 项:key={row.key}, value={row.value}, id={row.id}" + ) + delete_stmt = text(f"DELETE FROM SystemConfig WHERE id = {row.id}") + connection.execute(delete_stmt) + + logger.info("SystemConfig 表去重操作已完成。") def downgrade() -> None: