ORM 异常

SQLAlchemy ORM 异常。

对象名称 描述

ConcurrentModificationError

StaleDataError 的别名

NO_STATE

可能由工具实现抛出的异常类型。

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'>)

可能由工具实现抛出的异常类型。

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

操作遇到了数据库状态,而该状态未被考虑在内。

导致这种情况发生的条件包括

  • 刷新操作可能试图更新或删除行,但在 UPDATE 或 DELETE 语句期间匹配到的行数意外。请注意,当使用 version_id_col 时,UPDATE 或 DELETE 语句中的行也会与当前已知的版本标识符匹配。

  • 具有 version_id_col 的映射对象已刷新,但从数据库返回的版本号与对象本身的版本号不匹配。

  • 对象与其父对象分离,但该对象先前已附加到另一个已进行垃圾回收的父对象标识,无法判断新父对象是否是真正最新的“父对象”。

exception sqlalchemy.orm.exc.UnmappedClassError

针对未知类请求了映射操作。

方法 sqlalchemy.orm.exc.UnmappedClassError.__init__(cls: Type[_T], msg: str | None = None)
异常 sqlalchemy.orm.exc.UnmappedColumnError

针对未知列请求了映射操作。

异常 sqlalchemy.orm.exc.UnmappedError

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

异常 sqlalchemy.orm.exc.UnmappedInstanceError

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

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