sqlalchemy.orm.sessionmaker(一)笔记记录

1. bulk_save_objects:批量插入/批量更新

说明:

  • 大容量保存功能允许将映射的对象用作简单插入和更新操作的源,这些操作可以更容易地组合到更高性能的“executemany”操作中;
  • 从对象中提取数据也使用较低的延迟过程来执行,该过程忽略在更新时是否实际修改了属性,还忽略了SQL表达式。
  • 给定的对象不会添加到会话中,也不会在其上建立其他状态,除非还设置了“return_defaults”标志,在这种情况下,将填充主键属性和服务器端默认值。

注意: 批量保存功能允许较低的延迟插入/更新以牺牲大多数其他工作单元特征为代价的行。例如对象管理,关系处理,和SQL子句支持被无提示省略以支持raw插入/更新记录。

session.bulk_save_objects(list1,preserve_order=False,update_changed_only=True, return_defaults=True)
  • list1:映射对象实例的列表
  • return_defaults:如果为True,则缺少值的行生成默认值,即整数主键默认值和序列,将插入一次一个,以便主键值有空。特别是这将允许联合继承以及其他多表映射以正确插入而无需提前提供主键值;但是:paramref:.Session.bulk_save_objects.return_defaults大总体上降低了方法的性能增益
  • update_changed_only:如果为True,则呈现UPDATE语句基于每个状态中记录了更改的属性。如果为False,则所有存在的属性都将呈现到SET子句中除了主键属性。
  • preserve_order:保留顺序 如果为True,则插入和更新的顺序与给定对象的顺序完全匹配。如果为False,则将常见类型的对象分组为插入以及更新,以允许更多批处理机会。

2. bulk_insert_mappings:对给定的映射词典列表执行大容量插入。【需要有mapper,mappings】

说明:

  • 大容量插入特性允许将普通Python字典用作简单插入操作的来源组合成高性能的“执行人”操作。
  • 使用字典,没有“历史”或会话使用状态管理功能,减少插入时的延迟大量的简单行。字典中给定的值通常被传递不修改Core:meth:.Insert构造,在将表中的值组织到给定的映射器已映射。

注意: 大容量插入功能允许较低的延迟插入以牺牲大多数其他工作单元特征为代价的行。例如对象管理,关系处理,和SQL子句支持被无提示省略以支持raw插入记录。

#session.bulk_insert_mappings(mapper=User, mappings=list1,render_nulls=False)
session.bulk_insert_mappings(User, list1,render_nulls=False)
  • mapper : 映射类,或实际的:类:.Mapper对象,表示映射列表中表示的单一类型的对象。
  • mappings: 根据映射类上的属性名,包含要插入的映射行状态的字典列表。如果映射引用多个表(例如联接继承映射),则每个字典必须包含要填充到所有表中的所有键。
  • render_nulls: 如果为True,值“None”将导致INSERT语句中包含空值,而不是INSERT中省略列。这允许插入的所有行具有相同的列集合,从而允许将完整的行集合批处理给DBAPI。通常,每个包含与前一行不同的空值组合的列集都必须从呈现的INSERT语句中省略不同的列系列,这意味着它必须作为单独的语句发出。通过传递此标志,可以保证将整组行批处理为一个批处理;但是,代价是跳过由省略的列调用的服务器端默认值,因此必须注意确保不需要这些值。

3. bulk_update_mappings 对给定的映射词典列表执行大容量更新。

说明:

  • 大容量更新特性允许使用普通的Python字典作为简单更新操作的源,这些简单更新操作可以更容易地组合到更高性能的“executemany”操作中。
  • 使用字典时,不会使用“历史记录”或会话状态管理功能,从而减少了更新大量简单行时的延迟。

注意: 批量更新功能允许以牺牲大多数其他工作单元功能为代价进行较低延迟的行更新。对象管理、关系处理和SQL子句支持等功能无提示省略,有利于记录的原始更新。

session.bulk_update_mappings(mapper=User, mappings=list1)
  • mapper: 同上
    mappings::根据映射类上的属性名,包含要更新的映射行状态的字典列表。如果映射引用多个表(例如联接继承映射),则每个字典可能包含与所有表对应的键。所有存在且不属于主键的键都将应用于UPDATE语句的SET子句;主键值(必需的)将应用于WHERE子句。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值