Sorry Michael, 'self-contained' wasn't a proper term for that test given that it required an initial DB state containing a single row. I've modified your version to try and reproduce the bug.
Since yours didn't use elixir at all and I'm not familiar with elixir's internals, I was able to reproduce only what I believe to be the equivalent in sqlalchemy. Please note you'll need to create a mysql database and fill in the connection string, as the test does not fail with sqlite! from sqlalchemy import * from sqlalchemy.orm import * from sqlalchemy.ext.declarative import declarative_base e = create_engine('mysql://user:p...@localhost/test', echo=True) Base = declarative_base() class InviteCode(Base): __tablename__ = 'test_invite_codes' id = Column(Integer, primary_key=True) used = Column(Integer, default=0) users = relationship("User", backref="invite_code") class User(Base): __tablename__ = 'test_users' id = Column(Integer, primary_key=True) invite_code_id = Column(Integer, ForeignKey('test_invite_codes.id')) email = Column(String(128), unique=True) Base.metadata.create_all(e) session = Session(e, autocommit=True) session.query(User).delete() session.query(InviteCode).delete() invite_code = InviteCode() session.add(invite_code) session.flush() assert invite_code.used == 0 session.close() session.begin() user_row = User(email="n...@unique.com", invite_code_id=None) session.add(user_row) session.commit() invite_code = session.query(InviteCode).first() assert invite_code.used == 0 session.begin() invite_code.used = invite_code.used + 1 session.add(invite_code) session.flush() user_row_2 = User(email="n...@unique.com", invite_code_id=None) session.add(user_row_2) rolled_back = False try: session.commit() except: rolled_back = True session.rollback() assert rolled_back assert invite_code.used == 0 -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalch...@googlegroups.com. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.