state.commit_all() for *all* dirty states, not just those that changed ?

Issue #2582 resolved
Mike Bayer repo owner created an issue

related to #2566

#python
from sqlalchemy import *
from sqlalchemy.orm import *
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import event

Base = declarative_base()

class A(Base):
    __tablename__ = "a"

    id = Column(Integer, primary_key=True)
    a = Column(Integer)

e = create_engine("sqlite://", echo=True)

Base.metadata.create_all(e)

s = Session(e)

@event.listens_for(Session, "after_flush_postexec")
def e(sess, ctx):
    assert not sess.dirty

@event.listens_for(A, "after_update")
def e(mapper, conn, target):
    sess = object_session(target)
    for entry in sess.identity_map.values():
        entry.a = 5

a1, a2 = A(a=1), A(a=2)

s.add_all([a2](a1,))
s.commit()

a1.a = 3
s.commit()

Comments (2)

  1. Log in to comment