Closed
Description
Migrated issue, originally created by Michael Bayer (@zzzeek)
from sqlalchemy import Column, Integer, String, create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker, object_session
Base = declarative_base()
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True)
name = Column(String)
if __name__ == "__main__":
engine = create_engine("sqlite:///:memory:", echo=False)
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()
ed = User(name="ed")
session.add(ed)
session.flush()
session.delete(ed)
session.flush()
# should raise, or otherwise actually expunge
session.expunge(ed)
assert object_session(ed) is None
assert ed not in session
Metadata
Metadata
Assignees
Labels
Type
Projects
Relationships
Development
No branches or pull requests
Activity
sqlalchemy-bot commentedon Jul 24, 2014
Changes by Michael Bayer (@zzzeek):
sqlalchemy-bot commentedon Jul 24, 2014
Changes by Michael Bayer (@zzzeek):
sqlalchemy-bot commentedon Oct 19, 2014
Changes by Michael Bayer (@zzzeek):
sqlalchemy-bot commentedon Oct 19, 2014
Michael Bayer (@zzzeek) wrote:
.Session.expunge
would not fully detachthe given object if the object had been subject to a delete
operation that was flushed, but not committed. This would also
affect related operations like :func:
.make_transient
.fixes expunge after delete() fails #3139
→ 38bc809
sqlalchemy-bot commentedon Oct 19, 2014
Changes by Michael Bayer (@zzzeek):