如何将 except: raise 与 sqlalchemy 的异常集成? SQLAlchemyError 不工作

问题描述 投票:0回答:1

每当我尝试执行

main.py
中的语句时,我都会进行会话回滚。在
db_commands.py
中,我有
except: raise
子句,它应该允许我捕获导致回滚的任何错误,例如IntegrityError,但由于某种原因代码没有引发异常。我仔细阅读了有关 SQLAlchemy 核心异常的文档和
except: raise
的背景,以及 stackoverflow 上的合适建议问题,包括 this,但没有发现这种情况不会发生的原因。我想到的唯一原因是首先导入所有异常。如果是,如何将它们与
except: raise
子句正确集成?如果这可能是任何原因的原因,我会使用
Spyder IDE

db_commands.py:

from sqlalchemy.exc import SQLAlchemyError

...

async def retrieve_data_from_db(query, my_async_session: AsyncSession):

""" Connects to the database and returns the results for a given query """

async with my_async_session.begin() as session:
    try:
        executed_query = await session.execute(query)
    except SQLAlchemyError:
        raise
    finally:
        await session.close()
    return executed_query

main.py:

query = select(UserBase).where(UserBase.telegram_id == telegram_id)
result = await retrieve_data_from_db(query, async_session_maker)

asyncpg==0.28.0
SQLAlchemy==2.0.19
python sqlalchemy spyder except asyncpg
1个回答
0
投票

由于某种原因,Spyder 没有提供错误的背景信息。制作它

except SQLAlchemyError as exc:
    print(exc)
    raise

显示了错误,现在我可以处理它了。

© www.soinside.com 2019 - 2024. All rights reserved.