def test_o2m_flush_size(self): mapper(User, users, properties={ 'addresses': relationship(Address), }) mapper(Address, addresses) sess = create_session() u1 = User(name='ed') sess.add(u1) self._assert_uow_size(sess, 2) sess.flush() u1.name = 'jack' self._assert_uow_size(sess, 2) sess.flush() a1 = Address(email_address='foo') sess.add(a1) sess.flush() u1.addresses.append(a1) self._assert_uow_size(sess, 6) sess.flush() sess = create_session() u1 = sess.query(User).first() u1.name = 'ed' self._assert_uow_size(sess, 2) u1.addresses self._assert_uow_size(sess, 6)
def test_o2m_flush_size(self): mapper(User, users, properties={ 'addresses':relationship(Address), }) mapper(Address, addresses) sess = create_session() u1 = User(name='ed') sess.add(u1) self._assert_uow_size(sess, 2) sess.flush() u1.name='jack' self._assert_uow_size(sess, 2) sess.flush() a1 = Address(email_address='foo') sess.add(a1) sess.flush() u1.addresses.append(a1) self._assert_uow_size(sess, 6) sess.flush() sess = create_session() u1 = sess.query(User).first() u1.name='ed' self._assert_uow_size(sess, 2) u1.addresses self._assert_uow_size(sess, 6)
def test_pk_violation(self): s = self.session() a1 = Address(email_address='foo') u1 = User(id=1, name='ed', addresses=[a1]) s.add(u1) s.commit() a2 = Address(email_address='bar') u2 = User(id=1, name='jack', addresses=[a2]) u1.name = 'edward' a1.email_address = 'foober' s.add(u2) assert_raises(sa_exc.FlushError, s.commit) assert_raises(sa_exc.InvalidRequestError, s.commit) s.rollback() assert u2 not in s assert a2 not in s assert u1 in s assert a1 in s assert u1.name == 'ed' assert a1.email_address == 'foo' u1.name = 'edward' a1.email_address = 'foober' s.commit() eq_( s.query(User).all(), [User(id=1, name='edward', addresses=[Address(email_address='foober')])] )
def test_pk_violation(self): s = self.session() a1 = Address(email_address='foo') u1 = User(id=1, name='ed', addresses=[a1]) s.add(u1) s.commit() a2 = Address(email_address='bar') u2 = User(id=1, name='jack', addresses=[a2]) u1.name = 'edward' a1.email_address = 'foober' s.add(u2) assert_raises(sa_exc.FlushError, s.commit) assert_raises(sa_exc.InvalidRequestError, s.commit) s.rollback() assert u2 not in s assert a2 not in s assert u1 in s assert a1 in s assert u1.name == 'ed' assert a1.email_address == 'foo' u1.name = 'edward' a1.email_address = 'foober' s.commit() eq_( s.query(User).all(), [ User(id=1, name='edward', addresses=[Address(email_address='foober')]) ])
def test_savepoint_rollback(self): s = self.session() u1 = User(name='ed') u2 = User(name='jack') s.add_all([u1, u2]) s.begin_nested() u3 = User(name='wendy') u4 = User(name='foo') u1.name = 'edward' u2.name = 'jackward' s.add_all([u3, u4]) eq_( s.query(User.name).order_by(User.id).all(), [('edward', ), ('jackward', ), ('wendy', ), ('foo', )]) s.rollback() assert u1.name == 'ed' assert u2.name == 'jack' eq_(s.query(User.name).order_by(User.id).all(), [('ed', ), ('jack', )]) s.commit() assert u1.name == 'ed' assert u2.name == 'jack' eq_(s.query(User.name).order_by(User.id).all(), [('ed', ), ('jack', )])
def test_savepoint_commit_collections(self): s = self.session() u1 = User(name='ed', addresses=[Address(email_address='foo')]) s.add(u1) s.commit() u1.name='edward' u1.addresses.append(Address(email_address='bar')) s.begin_nested() u2 = User(name='jack', addresses=[Address(email_address='bat')]) s.add(u2) eq_(s.query(User).order_by(User.id).all(), [ User(name='edward', addresses=[Address(email_address='foo'), Address(email_address='bar')]), User(name='jack', addresses=[Address(email_address='bat')]) ] ) s.commit() eq_(s.query(User).order_by(User.id).all(), [ User(name='edward', addresses=[Address(email_address='foo'), Address(email_address='bar')]), User(name='jack', addresses=[Address(email_address='bat')]) ] ) s.commit() eq_(s.query(User).order_by(User.id).all(), [ User(name='edward', addresses=[Address(email_address='foo'), Address(email_address='bar')]), User(name='jack', addresses=[Address(email_address='bat')]) ] )
def test_savepoint_rollback(self): s = self.session() u1 = User(name='ed') u2 = User(name='jack') s.add_all([u1, u2]) s.begin_nested() u3 = User(name='wendy') u4 = User(name='foo') u1.name = 'edward' u2.name = 'jackward' s.add_all([u3, u4]) eq_(s.query(User.name).order_by(User.id).all(), [('edward',), ('jackward',), ('wendy',), ('foo',)]) s.rollback() assert u1.name == 'ed' assert u2.name == 'jack' eq_(s.query(User.name).order_by(User.id).all(), [('ed',), ('jack',)]) s.commit() assert u1.name == 'ed' assert u2.name == 'jack' eq_(s.query(User.name).order_by(User.id).all(), [('ed',), ('jack',)])
def test_savepoint_commit(self): s = self.session() u1 = User(name='ed') u2 = User(name='jack') s.add_all([u1, u2]) s.begin_nested() u3 = User(name='wendy') u4 = User(name='foo') u1.name = 'edward' u2.name = 'jackward' s.add_all([u3, u4]) eq_(s.query(User.name).order_by(User.id).all(), [('edward',), ('jackward',), ('wendy',), ('foo',)]) s.commit() def go(): assert u1.name == 'edward' assert u2.name == 'jackward' eq_(s.query(User.name).order_by(User.id).all(), [('edward',), ('jackward',), ('wendy',), ('foo',)]) self.assert_sql_count(testing.db, go, 1) s.commit() eq_(s.query(User.name).order_by(User.id).all(), [('edward',), ('jackward',), ('wendy',), ('foo',)])
def test_rollback_no_accounting(self): sess = sessionmaker(_enable_transaction_accounting=False)() u1 = User(name='ed') sess.add(u1) sess.commit() u1.name = 'edwardo' sess.rollback() testing.db.execute(users.update(users.c.name=='ed').values(name='edward')) assert u1.name == 'edwardo' sess.expire_all() assert u1.name == 'edward'
def test_preflush_no_accounting(self): sess = sessionmaker(_enable_transaction_accounting=False, autocommit=True)() u1 = User(name='ed') sess.add(u1) sess.flush() sess.begin() u1.name = 'edwardo' u2 = User(name="some other user") sess.add(u2) sess.rollback() sess.begin() assert testing.db.execute(select([users.c.name])).fetchall() == [('ed',)]
def test_commit_no_accounting(self): sess = sessionmaker(_enable_transaction_accounting=False)() u1 = User(name='ed') sess.add(u1) sess.commit() u1.name = 'edwardo' sess.rollback() testing.db.execute(users.update(users.c.name=='ed').values(name='edward')) assert u1.name == 'edwardo' sess.commit() assert testing.db.execute(select([users.c.name])).fetchall() == [('edwardo',)] assert u1.name == 'edwardo' sess.delete(u1) sess.commit()