From 4b969bdce398fd156a9dd15acb2a00e8bddc5a90 Mon Sep 17 00:00:00 2001 From: longbingljw Date: Thu, 4 Dec 2025 10:14:19 +0800 Subject: [PATCH] fix:mysql does not support 'returning' (#29069) --- api/controllers/service_api/wraps.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/api/controllers/service_api/wraps.py b/api/controllers/service_api/wraps.py index c07e18c686..cef8523722 100644 --- a/api/controllers/service_api/wraps.py +++ b/api/controllers/service_api/wraps.py @@ -316,18 +316,16 @@ def validate_and_get_api_token(scope: str | None = None): ApiToken.type == scope, ) .values(last_used_at=current_time) - .returning(ApiToken) ) + stmt = select(ApiToken).where(ApiToken.token == auth_token, ApiToken.type == scope) result = session.execute(update_stmt) - api_token = result.scalar_one_or_none() + api_token = session.scalar(stmt) + + if hasattr(result, "rowcount") and result.rowcount > 0: + session.commit() if not api_token: - stmt = select(ApiToken).where(ApiToken.token == auth_token, ApiToken.type == scope) - api_token = session.scalar(stmt) - if not api_token: - raise Unauthorized("Access token is invalid") - else: - session.commit() + raise Unauthorized("Access token is invalid") return api_token