MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / _SaveUpdateAll

Class _SaveUpdateAll

lib/sqlalchemy/orm/unitofwork.py:633–667  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

631
632
633class _SaveUpdateAll(_PostSortRec):
634 __slots__ = ("mapper", "sort_key")
635
636 def __init__(self, uow, mapper):
637 self.mapper = mapper
638 self.sort_key = ("SaveUpdateAll", mapper._sort_key)
639 assert mapper is mapper.base_mapper
640
641 @util.preload_module("sqlalchemy.orm.persistence")
642 def execute(self, uow):
643 util.preloaded.orm_persistence._save_obj(
644 self.mapper,
645 uow.states_for_mapper_hierarchy(self.mapper, False, False),
646 uow,
647 )
648
649 def per_state_flush_actions(self, uow):
650 states = list(
651 uow.states_for_mapper_hierarchy(self.mapper, False, False)
652 )
653 base_mapper = self.mapper.base_mapper
654 delete_all = _DeleteAll(uow, base_mapper)
655 for state in states:
656 # keep saves before deletes -
657 # this ensures 'row switch' operations work
658 action = _SaveUpdateState(uow, state)
659 uow.dependencies.add((action, delete_all))
660 yield action
661
662 for dep in uow.deps[self.mapper]:
663 states_for_prop = uow.filter_states_for_dep(dep, states)
664 dep.per_state_flush_actions(uow, states_for_prop, False)
665
666 def __repr__(self):
667 return "%s(%s)" % (self.__class__.__name__, self.mapper)
668
669
670class _DeleteAll(_PostSortRec):

Callers 2

Calls

no outgoing calls

Tested by

no test coverage detected