refactor(db): 修复异步连接池无界增长,并完成 SQLAlchemy 2.0 迁移与分层归位 (#6320)

This commit is contained in:
Aqr-K
2026-08-15 06:58:38 +08:00
committed by GitHub
parent e28de9cfe1
commit 8a11214a43
252 changed files with 11405 additions and 2889 deletions
+8 -4
View File
@@ -4,7 +4,11 @@ import pytest
from sqlalchemy import create_engine, text
from sqlalchemy.exc import OperationalError
import app.db as db_module
# 诊断实现已迁至 app.db.diagnosticsapp.db 只做 re-export,私有符号不在其上
import app.db.diagnostics as db_module
# 用 getter 而不是旧名字 AsyncEngine:后者只为仓库外插件保留,模块级导入它会在 pytest
# 的收集期就把全局异步引擎建出来
from app.db.engine import get_global_async_engine
class _SqliteError(Exception):
@@ -62,7 +66,7 @@ def test_database_error_listener_omits_statement_and_parameters(monkeypatch) ->
"""数据库错误日志不得包含 SQL、参数或驱动返回的原始消息。"""
messages = []
engine = create_engine("sqlite:///:memory:")
monkeypatch.setattr("app.db.logger.error", messages.append)
monkeypatch.setattr("app.db.diagnostics.logger.error", messages.append)
db_module._register_database_error_logging(engine)
with pytest.raises(OperationalError):
@@ -84,10 +88,10 @@ def test_database_error_listener_omits_statement_and_parameters(monkeypatch) ->
def test_async_database_engine_logs_driver_error_metadata(monkeypatch) -> None:
"""异步 Engine 应通过底层 sync engine 记录驱动错误码。"""
messages = []
monkeypatch.setattr("app.db.logger.error", messages.append)
monkeypatch.setattr("app.db.diagnostics.logger.error", messages.append)
async def query_missing_table() -> None:
async with db_module.AsyncEngine.connect() as connection:
async with get_global_async_engine().connect() as connection:
await connection.execute(text("SELECT * FROM async_missing_table"))
with pytest.raises(OperationalError):