会话 API

优质
小牛编辑
132浏览
2023-12-01

会话和会话生成器()

Object NameDescription

ORMExecuteState

表示对 Session.execute() 方法,传递给 SessionEvents.do_orm_execute() 事件挂钩。

Session

管理ORM映射对象的持久性操作。

sessionmaker

可配置的 Session 工厂。

SessionTransaction

A Session -级别事务。

class sqlalchemy.orm.sessionmaker(bind=None, class_=<class 'sqlalchemy.orm.session.Session'>, autoflush=True, autocommit=False, expire_on_commit=True, info=None, **kw)
Object NameDescription

close_all_sessions()

关闭内存中的所有会话。

make_transient(instance)

更改给定实例的状态,使其 transient .

make_transient_to_detached(instance)

生成给定的瞬态实例 detached .

object_session(instance)

返回 Session 给定实例所属的。

was_deleted(object_)

如果给定对象在会话刷新中被删除,则返回true。

function sqlalchemy.orm.close_all_sessions()

这些函数由sqlAlchemy attribute instruction API提供,用于提供处理实例、属性值和历史记录的详细接口。其中一些在构造事件侦听器函数时非常有用,如 ORM事件 .

Object NameDescription

del_attribute(instance, key)

删除属性值,触发历史事件。

flag_dirty(instance)

将实例标记为“dirty”,但不提及任何特定属性。

flag_modified(instance, key)

将实例上的属性标记为“modified”。

get_attribute(instance, key)

获取属性的值,激发所需的任何可调用文件。

get_history(obj, key[, passive])

返回A History 记录给定的对象和属性键。

History

添加值、未更改值和已删除值的三元组,表示已检测属性上发生的更改。

init_collection(obj, key)

初始化集合属性并返回集合适配器。

instance_state

返回 InstanceState 对于给定的映射对象。

is_instrumented(instance, key)

如果给定实例上的给定属性由attributes包检测,则返回true。

object_state(instance)

给定一个对象,返回 InstanceState 与对象关联。

set_attribute(instance, key, value[, initiator])

设置属性值,触发历史事件。

set_committed_value(instance, key, value)

设置没有历史事件的属性值。

function sqlalchemy.orm.util.object_state(instance)

给定一个对象,返回 InstanceState 与对象关联。

加薪 sqlalchemy.orm.exc.UnmappedInstanceError 如果未配置映射。

等效功能可通过 inspect() 功能如下:

inspect(instance)

使用检查系统将提高 sqlalchemy.exc.NoInspectionAvailable 如果实例不是映射的一部分。

function sqlalchemy.orm.attributes.del_attribute(instance, key)

删除属性值,触发历史事件。

不管直接应用于类的工具是什么,都可以使用这个函数,即不需要描述符。自定义属性管理方案将需要使用此方法来建立SQLAlchemy所理解的属性状态。

function sqlalchemy.orm.attributes.get_attribute(instance, key)

获取属性的值,激发所需的任何可调用文件。

不管直接应用于类的工具是什么,都可以使用这个函数,即不需要描述符。自定义属性管理方案将需要使用此方法来使用SQLAlchemy所理解的属性状态。

function sqlalchemy.orm.attributes.get_history(obj, key, passive=symbol('PASSIVE_OFF'))

返回A History 记录给定的对象和属性键。

这就是 pre-flush 给定属性的历史记录,每次 Session 刷新对当前数据库事务的更改。

注解

喜欢使用 AttributeState.historyAttributeState.load_history() 用于检索的访问器 History 例如属性。

参数
  • obj -- 其类由属性包检测的对象。

  • key -- 字符串属性名称。

  • passive -- 指示属性的加载行为(如果该值尚未存在)。这是位标志属性,默认为符号 PASSIVE_OFF 指示应发出所有必要的SQL。

参见

AttributeState.history

AttributeState.load_history() -如果值不在本地,则使用加载程序可调用文件检索历史记录。

function sqlalchemy.orm.attributes.init_collection(obj, key)

初始化集合属性并返回集合适配器。

此函数用于直接访问以前卸载的属性的集合内部。例如。::

collection_adapter = init_collection(someobject, 'elements')
for elem in values:
    collection_adapter.append_without_event(elem)

要更简单地完成上述操作,请参见 set_committed_value() .

参数
  • obj -- 映射对象

  • key -- 集合所在的字符串属性名称。

function sqlalchemy.orm.attributes.flag_modified(instance, key)

将实例上的属性标记为“modified”。

这将在实例上设置“modified”标志,并为给定的属性建立一个无条件的更改事件。属性必须有一个值,否则 InvalidRequestError 提高了。

若要在不引用任何特定属性的情况下将对象标记为“脏”,以便在刷新中考虑该对象,请使用 flag_dirty() 打电话。

参见

flag_dirty()

function sqlalchemy.orm.attributes.flag_dirty(instance)

将实例标记为“dirty”,但不提及任何特定属性。

这是一个特殊的操作,允许对象通过刷新过程进行拦截,例如 SessionEvents.before_flush() . 请注意,对于没有更改的对象,即使通过此方法标记为脏对象,刷新过程中也不会发出任何SQL。然而,A SessionEvents.before_flush() 处理程序将能够在 Session.dirty 收集并可能在其上建立更改,然后这些更改将包含在发出的SQL中。

1.2 新版功能.

参见

flag_modified()

function sqlalchemy.orm.attributes.instance_state()

返回 InstanceState 对于给定的映射对象。

此函数是的内部版本 object_state() . 这个 object_state() 和/或 inspect() 这里首选函数,因为如果给定的对象没有映射,它们都会发出一个信息性异常。

function sqlalchemy.orm.instrumentation.is_instrumented(instance, key)

如果给定实例上的给定属性由attributes包检测,则返回true。

不管直接应用于类的工具是什么,都可以使用这个函数,即不需要描述符。

function sqlalchemy.orm.attributes.set_attribute(instance, key, value, initiator=None)

设置属性值,触发历史事件。

不管直接应用于类的工具是什么,都可以使用这个函数,即不需要描述符。自定义属性管理方案将需要使用此方法来建立SQLAlchemy所理解的属性状态。

参数
  • instance -- 将被修改的对象

  • key -- 属性的字符串名称

  • value -- 赋值

  • initiator -- 一个实例 Event 这可能是从以前的事件侦听器传播的。此参数用于 set_attribute() 函数正在现有事件侦听函数中使用,其中 Event 正在提供对象;该对象可用于跟踪事件链的原点。…添加的版本:1.2.3

function sqlalchemy.orm.attributes.set_committed_value(instance, key, value)

设置没有历史事件的属性值。

取消任何以前存在的历史记录。对于标量保留属性,该值应为标量值,对于任何集合保留属性,该值应为ITerable。

这与惰性加载程序触发并从数据库加载其他数据时使用的底层方法相同。特别是,应用程序代码可以使用此方法,该应用程序代码通过单独的查询加载了其他属性或集合,然后可以将这些属性或集合附加到实例上,就像它是原始加载状态的一部分一样。

class sqlalchemy.orm.attributes.History(added, unchanged, deleted)

添加值、未更改值和已删除值的三元组,表示已检测属性上发生的更改。

最简单的方法是 History 对象上特定属性的对象是使用 inspect() 功能:

from sqlalchemy import inspect

hist = inspect(myobject).attrs.myattribute.history

每个元组成员都是一个可重复序列:

  • added -添加到属性(第一个tuple元素)的项集合。

  • unchanged -属性(第二个tuple元素)上未更改的项的集合。

  • deleted -已从属性(第三个tuple元素)中移除的项的集合。

类签名

class sqlalchemy.orm.History (sqlalchemy.orm.History)

method sqlalchemy.orm.attributes.History.empty()

如果这个返回真 History 没有更改,也没有现有的、未更改的状态。

method sqlalchemy.orm.attributes.History.has_changes()

如果这个返回真 History 有变化。

method sqlalchemy.orm.attributes.History.non_added()

返回一个未更改+已删除的集合。

method sqlalchemy.orm.attributes.History.non_deleted()

返回已添加+未更改的集合。

method sqlalchemy.orm.attributes.History.sum()

返回已添加+未更改+已删除的集合。