def test_transaction(self): database.set_autocommit(False) with database.transaction() as t: User.create(name='jack', email='*****@*****.**') with database.transaction() as t: try: User.create(name='amy', id=1) except: t.rollback() database.set_autocommit(True) assert User.count() == 1
def create_data(self, count, table=None): database.set_autocommit(False) # lots of insert in a transaction with database.transaction(): if table is 1: # only create data in table `user` for i in range(1, count + 1): User.create(name='name' + str(i), email='email' + str(i)) elif table is 2: # only create data in table `post` for i in range(1, count + 1): Post.create(name='name' + str(i), user_id=count + 1 - i) else: # both, default for i in range(1, count + 1): User.create(name='name' + str(i), email='email' + str(i)) for i in range(1, count + 1): Post.create(name='name' + str(i), user_id=count + 1 - i) database.set_autocommit(True)
def test_a_lot_of_insert_in_transaction(self): database.set_autocommit(False) with database.transaction(): for i in range(1000): User.create(name=str(i), email=str(i)) database.set_autocommit(True)