首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SqlAlchemy 2.0 中文文档(二十八)

请注意,此‘脏数据’计算是‘乐观的’;大多数属性设置或集合修改操作都会将实例标记为‘脏数据’并将其放入此集合中,即使属性的值没有净变化。...请注意,此“脏”计算是“乐观”的;大多数属性设置或集合修改操作都会将实例标记为“脏”,并将其放入此集合中,即使属性的值没有净变化。...请注意,此“脏”计算是“乐观的”;大多数属性设置或集合修改操作都会将实例标记为“脏”,并将其放入此集合中,即使属性的值没有净变化。...请注意,此“脏”计算是“乐观”的;大多数属性设置或集合修改操作都会将实例标记为“脏”并将其放入此集合中,即使属性值没有净变化。...当新值被应用时,如果属性未加载或已过期,则标量属性可能没有记录先前设置的值 - 在这些情况下,即使最终没有对其数据库值进行净更改,也假定属性已更改。

48510
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    SqlAlchemy 2.0 中文文档(二十四)

    在 UPDATE 的情况下,语句根据已更改的属性分组,因此将成为每个 SET 子句的主题。...请注意,这个“脏”计算是“乐观”的;大多数属性设置或集合修改操作都会将实例标记为“脏”,并将其放入这个集合中,即使属性的值没有净变化。...当应用新值时,如果标量属性未加载或已过期,则可能未记录先前设置的值 - 在这些情况下,即使最终对其数据库值没有净变化,也假定属性已更改。...在 UPDATE 的情况下,语句根据已更改的属性分组,并且因此将成为每个 SET 子句的主题。...请注意,此“脏”计算是“乐观”的;大多数属性设置或集合修改操作都会将实例标记为“脏”,并将其放入此集合中,即使属性的值没有净变化。

    41310

    SqlAlchemy 2.0 中文文档(二十六)

    此方法对所有标记为“脏”的实例进行调用,甚至对其列基属性没有净变化 的实例,并且没有进行 UPDATE 语句。当任何列基属性的“设置属性”操作被调用或任何集合被修改时,对象被标记为脏。...此事件用于在更新发生之前修改实例上的本地、与对象无关的属性,以及在给定连接上发出附加的 SQL 语句。 此方法将为所有标记为“脏”的实例调用,即使它们的基于列的属性没有净变化。...当对其基于列的属性之一调用“设置属性”操作或修改其任何集合时,对象将被标记为脏。如果在更新时,没有基于列的属性有任何净变化,将不会发出 UPDATE 语句。...对于所有标记为“脏”的实例都会调用此方法,即使它们的基于列的属性没有任何净变化,并且没有进行 UPDATE 语句。当对象的任何基于列的属性被调用“设置属性”操作或其任何集合被修改时,对象被标记为脏。...当对象的任何基于列的属性被调用“设置属性”操作或其集合被修改时,对象被标记为脏。如果在更新时,没有基于列的属性有任何净变化,那么不会发出 UPDATE 语句。

    31210

    SqlAlchemy 2.0 中文文档(八十一)

    写操作仅限于 append() 和 remove(),对集合的更改在会话刷新之前不可见。此功能在“自动刷新”会话中特别方便,该会话会在每次查询之前刷新。...外部解除引用并超出范围的实例将自动从会话中移除。但是,具有“脏”更改的项目将保持强引用,直到这些更改被刷新,此时对象将恢复为弱引用(这适用于像可选属性这样的‘可变’类型)。...外部解除引用并且超出范围的实例会自动从会话中移除。但是,具有“脏”更改的项目将保持强引用,直到这些更改被刷新,此时对象将恢复为弱引用(这适用于像可选属性这样的“可变”类型)。...外部解除引用并超出范围的实例将自动从会话中移除。但是,具有“脏”更改的项目将保持强引用,直到这些更改被刷新,此时对象将恢复为弱引用(这适用于“可变”类型,如可选属性)。...外部解除引用并超出范围的实例会自动从会话中移除。但是,具有“脏”更改的项目将保持强引用,直到这些更改被刷新,此时对象将恢复为弱引用(这适用于‘可变’类型,如可选属性)。

    9610

    SqlAlchemy 2.0 中文文档(二十二)

    print("Object is present") 会话还跟踪所有新创建的(即待处理的)对象,自上次加载或保存以来发生了更改的所有对象(即“脏对象”),以及标记为已删除的所有对象: # pending...这意味着当它们在外部应用程序中取消引用时,它们也从Session 中消失,并且受 Python 解释器的垃圾收集影响。这种情况的例外包括待处理的对象、标记为已删除的对象或具有待处理更改的持久对象。...已删除 - 在刷新中已删除的实例,但事务尚未完成。处于这种状态的对象基本上与“待定”状态相反;当会话的事务提交时,对象将移至分离状态。另外,当会话的事务回滚时,已删除的对象将回到持久状态。...("Object is present") 会话还会跟踪所有新创建的(即待处理的)对象,所有自上次加载或保存以来发生更改的对象(即“脏对象”),以及所有被标记为已删除的对象: # pending objects...这种情况的例外包括待处理对象、标记为已删除的对象或具有待处理更改的持久对象。在完全刷新后,这些集合都为空,并且所有对象再次是弱引用的。 使Session中的对象保持强引用通常只需要简单的方法。

    28110

    SqlAlchemy 2.0 中文文档(七十九)

    #1912 在刷新时生成警告,当集合成员、标量引用不在刷新中时 当父对象上标记为 “脏” 的加载的 relationship() 引用的相关对象不在当前 Session 中时,现在会发出警告。...#1912 在收集成员,不是刷新的标量引用时生成的警告 当通过父对象上标记为“脏”的加载relationship()引用的相关对象在当前Session中不存在时,现在会发出警告。...#1912 在刷新时生成的警告,集合成员,不是刷新的一部分的标量引用 当通过父对象上标记为“脏”的加载的 relationship() 引用的相关对象在当前 Session 中不存在时,会发出警告。...先前使用mutable=True的方法不提供更改事件 - 相反,ORM 必须在每次调用flush()时扫描会话中存在的所有可变值,并将它们与原始值进行比较以检测更改,这是一个非常耗时的事件。...先前使用mutable=True的方法不提供更改事件 - 相反,ORM 必须在每次调用flush()时扫描会话中存在的所有可变值,并将它们与原始值进行比较以检测更改,这是一个非常耗时的事件。

    10210

    SqlAlchemy 2.0 中文文档(八十)

    已弃用/移除的 ORM 元素 大多数在 0.5 版本中已弃用并引发弃用警告的元素已移除(有几个例外)。所有标记为“待弃用”的元素现在已弃用,并将在使用时引发警告。....: 在rollback()后,会话现在是可重用的。标量和集合属性的更改、添加和删除都会被回滚。...文档中描述的@validates装饰器提供了一种快速的方式,将任何映射属性标记为特定类方法“验证”。...注:在rollback()后,会话现在是可重用的。标量和集合属性的更改、添加和删除都会被回滚。...在文档中描述的 @validates 装饰器提供了一种快速的方式,可以将任何映射属性标记为特定类方法“验证”的方法。 属性仪器定制。

    20310

    SqlAlchemy 2.0 中文文档(二十三)

    另请参阅 2.0 中将删除的 cascade_backrefs 行为已弃用 - 关于“级联反向引用”行为变更的背景信息 删除 删除级联表示当“父”对象标记为删除时,其相关的“子”对象也应标记为删除。...使用事件跟踪事务状态 请参阅事务事件部分,了解有关会话事务状态更改的可用事件挂钩的概述。...使用 SQLAlchemy 2.0 风格的操作,这些方法在所有情况下都会影响最外层的事务。对于会话,假定Session.autobegin保持默认值True。...使用事件跟踪事务状态 请参阅事务事件部分,了解会话事务状态更改的可用事件挂钩的概述。...当出现错误时,保存点会被回滚,并且对已更改的对象的Session的状态将被过期。

    28710

    SqlAlchemy 2.0 中文文档(五十五)

    另请参阅 级联 delete-orphan 实例已通过其属性与的实例关联,并且仅允许有一个单独的父对象。 ### 实例已通过其属性与的实例关联,并且仅允许有一个单独的父对象。...为了解决此问题,可以将类标记为 __allow_unmapped__ 布尔属性,直到它们完全迁移到 2.0 语法。...另请参阅 关系加载技术 - 关于急加载和其他面向关系的加载技术的详细文档 提交 - 会话提交的背景介绍 刷新/过期 - 属性过期的背景介绍 由于刷新期间的先前异常,此会话的事务已回滚 Session...另请参阅 级联 delete-orphan 实例已通过其属性与的实例关联,并且只允许一个父级。 实例已通过其属性与的实例关联,并且只允许一个父级。...要解决此问题,可以将类标记为__allow_unmapped__布尔属性,直到它们可以完全迁移到 2.0 语法。

    44310

    SqlAlchemy 2.0 中文文档(七十八)

    脏”对象 一项行为变更应该提高那些通过Session.begin_nested()使用 SAVEPOINT 的用户的效率 - 在rollback()时,只有自上次刷新以来被标记为脏的对象将被过期,其余的...在 0.8 中,passive参数将不起作用,并且未加载的属性永远不会被检查历史记录,因为根据定义,未加载的属性上不会有待处理的状态更改。...脏”对象 通过Session.begin_nested()使用 SAVEPOINT 的用户,应该改变行为以提高效率 - 在rollback()时,只有自上次刷新以来被标记为脏的对象将会过期,其余的Session...脏”对象 一项行为变更应该提高那些通过Session.begin_nested()使用 SAVEPOINT 的用户的效率 - 在rollback()时,只有自上次刷新以来被标记为脏的对象将被过期,其余的...在 0.8 版本中,passive参数将不起作用,并且未加载的属性永远不会检查历史记录,因为根据定义,未加载的属性上不会有待处理的状态更改。

    15410

    SqlAlchemy 2.0 中文文档(五十七)

    - 本文档,SQLAlchemy 2.0 的新功能和行为 尚未将其 1.4 应用程序更新为遵循 SQLAlchemy 2.0 引擎和 ORM 约定的读者可以导航到 SQLAlchemy 2.0 -...这些注释可以根据需要在每个属性上使用,对于那些具体类型有帮助的属性;使用 mapped_column() 的非注释属性将在实例级别被标记为 Any。...这些注释可以根据需要,按属性基础使用,对于那些特定类型有帮助的属性;使用`mapped_column()`的未注释属性将在实例级别被标记为`Any`。...这些注释可以根据需要在每个属性的基础上使用,对于那些特定类型有帮助的属性;使用mapped_column()的未注释属性将在实例级别被标记为Any。...步骤三 - 使用 Mapped 需要的精确 Python 类型。 对于希望精确类型化的所有属性,都可以执行此操作;对于希望保留为 Any 的属性可以跳过。

    49310

    SqlAlchemy 2.0 中文文档(三十一)

    1.4 版本更改:绝大部分声明式扩展现在已整合到 SQLAlchemy ORM 中,并可从 sqlalchemy.orm 命名空间导入。请参阅声明式映射的文档以获取新文档。...声明式映射属性分配的右侧 已移除,因为这类似于 Mapper 类通常会执行的操作,即它将这些属性替换为 InstrumentedAttribute 的具体实例。...) # will pass mypy --strict other_name: Optional[str] = mc.name 无论映射属性是否被标记为 Optional,生成的 __init__()...对 MyDataClass.data 成员的任何原地更改都会在父对象上标记属性为“脏”: >>> from sqlalchemy.orm import Session >>> sess = Session...对 MyDataClass.data 成员的任何原地更改都将标记父对象的属性为“脏”: >>> from sqlalchemy.orm import Session >>> sess = Session

    44420

    SqlAlchemy 2.0 中文文档(三)

    sandy Python 对象现在不再被认为是脏的: >>> sandy in session.dirty False 然而请注意,我们仍然处于一个事务中,我们的更改尚未推送到数据库的永久存储中。...sandy Python 对象现在不再被视为脏: >>> sandy in session.dirty False 但请注意,我们仍然处于事务中,我们的更改尚未推送到数据库的永久存储中。...': 'sandy', 'fullname': 'Sandy Cheeks'} 对于已删除的对象,当我们之前注意到patrick不再在会话中时,该对象的标识也被恢复: >>> patrick in session...即使我们从未将其分配给对象,当我们访问属性时,集合也会自动出现。...当我们访问属性时,集合也会自动出现,即使我们从未将其分配给对象。

    41520

    FastAPI(44)- 操作关系型数据库

    这是为了防止被不同的事物(对于不同的请求)共享相同的连接 但是在 FastAPI 中,使用普通函数 (def) 可以针对同一请求与数据库的多个线程进行交互,因此需要让 SQLite 知道它应该允许使用多线程...,这个实例就会成为实际的数据库会话 将其命名为 SessionLocal ,方便区分从 SQLAlchemy 导入的 Session 稍后将使用 Session(从 SQLAlchemy 导入的那个)...的技术细节 SQLAlchemy 默认情况下 lazy loading 懒加载,即需要获取数据时,才会主动从数据库中获取对应的数据 比如获取属性 ,SQLAlchemy 会从 items 表中获取该用户的...# 2、将实例对象添加到数据库会话 Session 中 db.add(db_user) # 3、将更改提交到数据库 db.commit() # 4、刷新实例,方便它包含来自数据库的任何新数据...) # 2、将实例对象添加到数据库会话 Session 中 db.add(db_user) # 3、将更改提交到数据库 db.commit() # 4、刷新实例,方便它包含来自数据库的任何新数据,

    2.2K30

    SqlAlchemy 2.0 中文文档(十四)

    method static converter(fn) 将方法标记为集合转换器。 自版本 1.3 起弃用:collection.converter() 处理程序已弃用,并将在将来的版本中删除。...对于在调用时不知道要移除的值的方法,请使用 collection.removes_return。 method static removes_return() 将该方法标记为从集合中移除实体。...对于在调用时知道要移除的值的方法,请使用 collection.remove。 method static replaces(arg) 将该方法标记为替换集合中的实体。...method static converter(fn) 将方法标记为集合转换器。 自版本 1.3 弃用:collection.converter() 处理程序已弃用,并将在未来的版本中移除。...对于在调用时未知要移除的值的方法,请使用 collection.removes_return。 method static removes_return() 将该方法标记为从集合中移除实体。

    23310

    SqlAlchemy 2.0 中文文档(七十五)

    为了清理这个领域并使会话状态转换的范围完全透明化,已添加了一系列新事件,旨在涵盖对象可能在状态之间转换的每种可能方式,而且还给“已删除”状态在会话对象状态领域内赋予了自己的正式状态名称。...对于具有此类用例并且正在解决此问题的应用程序,此更改可能是向后不兼容的。...为了清理这个领域并使会话状态转换的领域完全透明,已经添加了一系列新事件,旨在涵盖对象可能在状态之间转换的每种可能方式,并且“已删除”状态还在会话对象状态领域内被赋予了自己的官方状态名称。...为了清理这个领域并使会话状态转换的领域完全透明,已经添加了一系列新的事件,旨在涵盖对象可能在状态之间转换的每种可能方式,此外,“已删除”状态已在会话对象状态领域内被赋予了自己的官方状态名称。...对于存在此类用例并且正在解决此问题的应用程序,此更改可能不兼容。

    33010

    YashanDB数据库实例

    会话级参数指仅对会话产生影响的配置参数,例如当前会话的事务隔离等级。用户连接数据库实例产生新会话时,将从全局的会话级参数复制一份作为当前会话的参数。...在会话里通过ALTER SESSION SET语句修改会话级参数后,仅对当前会话生效。分布式部署中可以通过CN实例,对所有实例的配置参数进行修改。...但是事务提交时并未将data buffer中的脏页写入磁盘,由DBWR线程使用最有效的方式将已修改的脏页写入数据文件;因此会导致未提交事务的更改可能写入了数据文件中,而已提交的更改可能未写入数据文件。...如上图所示,检查点后的某些更改可能也已写入数据文件,但只有检查点前的更改才保证一定已全部被写入数据文件。# 实例恢复的阶段实例恢复分为两个阶段,两个阶段都完成实例恢复操作才算完成。...第二阶段:回滚(Rolling Back)回滚操作又称事务恢复(Transaction Recovery),是指结合undo块将已执行但尚未提交的更改还原成执行前的状态。

    7510
    领券