def second_flow(print_function):
    session = create_session()

    print_function("Reading account 1...")
    account = session.query(Account).filter(Account.name == "account1").one()
    print_function("Account 1 was read")

    print_function("Updating account 1...")
    account.amount += Decimal('100')

    print_function("Committing...")
    session.commit()
    print_function("Committed!")
def second_flow(print_function):
    transaction_level = "READ COMMITTED"

    print_function(
        f"Using '{transaction_level}'. We should NOT see uncommitted data...")

    session = create_session(transaction_level)

    account_count = session.query(Account).count()
    print_function(f"Account count: {account_count}")

    if account_count == 3:
        print_function('Sending email to CEO to say that we got 3 accounts!!!')
def first_flow(print_function):
    session = create_session("SERIALIZABLE")

    print_function("Reading account 1...")
    account = session.query(Account).filter(Account.name == "account1").one()
    print_function("Account 1 was read")

    print_function('Sleeping...')
    sleep(3)
    print_function('Waking up...')

    account.amount += Decimal('100')

    session.commit()
Exemplo n.º 4
0
def first_flow(print_function):
    session = create_session()

    print_function('Adding account 3...')
    account3 = Account(name='account3', amount=Decimal('33.33'))
    session.add(account3)

    print_function('Flushing changes to the DB...')
    session.flush()

    print_function('Sleeping...')
    sleep(5)
    print_function('Waking up...')

    print_function('We didn\'t commit anything...')
def first_flow(print_function):
    session = create_session()

    print_function('Adding account 3...')
    account3 = Account(name='account3', amount=Decimal('33.33'))
    session.add(account3)

    print_function('Flushing changes to the DB...')
    session.flush()

    print_function('Sleeping...')
    sleep(5)
    print_function('Waking up...')

    print_function('Rolling back...')
    session.rollback()
    print_function('Rolled back!!')
Exemplo n.º 6
0
def first_flow(print_function):
    transaction_level = "REPEATABLE READ"

    session = create_session(transaction_level)

    print_function(f"Using '{transaction_level}'. When we read the data first time ")
    print_function("we will create a fixed snapshot of the database")

    print_database(print_function, session)

    print_function('Sleeping...')
    sleep(5)
    print_function('Waking up...')

    print_function("The data in the DB has changed. But if we query it again ")
    print_function("we wont see any updates as we will be reading from the transaction snapshot")

    print_database(print_function, session)
Exemplo n.º 7
0
def first_flow(print_function):
    session = create_session()

    print_function("Reading account 1...")
    account = session.query(Account).filter(
        Account.name == "account1").with_for_update().one()
    print_function("Account 1 was read")

    print_function("Updating account 1...")
    account.amount += Decimal('100')

    print_function('Sleeping...')
    sleep(5)
    print_function('Waking up...')

    print_function("Committing...")
    session.commit()
    print_function("Committed!")
def second_flow(print_function):
    transaction_level = "READ UNCOMMITTED"

    print_function(
        f"Using '{transaction_level}'. We should not be surprised to see uncommitted data..."
    )

    session = create_session(transaction_level)

    account_3 = session.query(Account).filter(
        Account.name == 'account3').one_or_none()

    if account_3:
        print_function(
            "Updating the newly created account that is not committed yet...")
        account_3.amount += 50

        print_function('Committing...')
        session.commit()
        print_function('Committed!!')
Exemplo n.º 9
0
def second_flow(print_function):
    session = create_session()

    print_function('Adding new account at the meantime...')
    account3 = Account(name='account3', amount=Decimal('33.33'))
    session.add(account3)

    account1 = session.query(Account).filter(Account.name == 'account1').one_or_none()
    account2 = session.query(Account).filter(Account.name == 'account2').one_or_none()

    if account1:
        print_function('Updating existing account at the meantime...')
        account1.name = 'Updated from second flow'
        session.commit()

    if account2:
        print_function('Deleting existing account at the meantime...')
        session.delete(account2)

    session.commit()
    print_function('Committed!!')