ORM 异常

SQLAlchemy ORM 异常。

对象名称 描述

ConcurrentModificationError

别名 StaleDataError

NO_STATE

可能由 instrumentation 实现引发的异常类型。

attribute sqlalchemy.orm.exc..sqlalchemy.orm.exc.ConcurrentModificationError

别名 StaleDataError

exception sqlalchemy.orm.exc.DetachedInstanceError

尝试访问已分离的映射实例上未加载的属性。

exception sqlalchemy.orm.exc.FlushError

在 flush() 期间检测到无效条件。

exception sqlalchemy.orm.exc.LoaderStrategyException

属性的加载器策略不存在。

method sqlalchemy.orm.exc.LoaderStrategyException.__init__(applied_to_property_type: Type[Any], requesting_property: MapperProperty[Any], applies_to: Type[MapperProperty[Any]] | None, actual_strategy_type: Type[LoaderStrategy] | None, strategy_key: Tuple[Any, ...])
sqlalchemy.orm.exc.NO_STATE = (<class 'AttributeError'>, <class 'KeyError'>)

可能由 instrumentation 实现引发的异常类型。

exception sqlalchemy.orm.exc.ObjectDeletedError

刷新操作未能检索到与对象的已知主键标识对应的数据库行。

当访问对象的过期属性时,或者当使用 Query.get() 检索对象时(检索时检测到对象已过期),会执行刷新操作。基于主键为目标行发出 SELECT;如果未返回任何行,则会引发此异常。

此异常的真正含义仅仅是与持久对象关联的主键标识不存在任何行。该行可能已被删除,或者在某些情况下,主键已更新为新值,这超出了 ORM 对目标对象的管理范围。

method sqlalchemy.orm.exc.ObjectDeletedError.__init__(state: InstanceState[Any], msg: str | None = None)
exception sqlalchemy.orm.exc.ObjectDereferencedError

由于对象被垃圾回收,操作无法完成。

exception sqlalchemy.orm.exc.StaleDataError

操作遇到无法解释的数据库状态。

发生这种情况的条件包括

  • flush 可能尝试更新或删除行,并且在 UPDATE 或 DELETE 语句期间匹配了意外数量的行。请注意,当使用 version_id_col 时,UPDATE 或 DELETE 语句中的行也会根据当前已知的版本标识符进行匹配。

  • 刷新了带有 version_id_col 的映射对象,并且从数据库返回的版本号与对象自身的版本号不匹配。

  • 对象与其父对象分离,但是该对象之前已附加到不同的父标识(已被垃圾回收),并且无法确定新父对象是否真的是最新的“父对象”。

exception sqlalchemy.orm.exc.UnmappedClassError

为未知类请求了映射操作。

method sqlalchemy.orm.exc.UnmappedClassError.__init__(cls: Type[_T], msg: str | None = None)
exception sqlalchemy.orm.exc.UnmappedColumnError

为未知列请求了映射操作。

exception sqlalchemy.orm.exc.UnmappedError

涉及预期映射不存在的异常基类。

exception sqlalchemy.orm.exc.UnmappedInstanceError

为未知实例请求了映射操作。

method sqlalchemy.orm.exc.UnmappedInstanceError.__init__(obj: object, msg: str | None = None)