def test_transaction_isolation_level_snapshot_1():
    conn_a = pyodbc.connect(get_connection_string())

    # set conn_b to transaction isolation level snapshot
    conn_b = pyodbc.connect(get_connection_string())
    conn_b.autocommit = True
    conn_b.execute('SET TRANSACTION ISOLATION LEVEL SNAPSHOT')
    conn_b.autocommit = False

    # Once result is decided
    results = conn_b.execute('SELECT * FROM x')

    # Even if the content has changed
    eq_(tuple(results), ())
    conn_a.execute('INSERT INTO x(a) VALUES (1)')
    conn_a.commit()

    # then returns the old result set
    results = conn_b.execute('SELECT * FROM x')
    eq_(tuple(results), ())

    # teardown
    conn_a.execute('DELETE FROM x')
    conn_a.commit()
    conn_a.close()
    conn_b.close()
def test_transaction_isolation_level_in_two_connections_default():
    conn_a = pyodbc.connect(get_connection_string())
    conn_b = pyodbc.connect(get_connection_string())
    conn_a.execute('INSERT INTO x(a) VALUES (1)')
    conn_a.commit()
    (result, ), = conn_b.execute('SELECT * FROM x')
    eq_(result, 1)
    conn_a.execute('DELETE FROM x')
    conn_a.commit()
    conn_a.close()
    conn_b.close()
Пример #3
0
def test_not_mars_not_autocommit():
    conn = pyodbc.connect(get_connection_string())
    conn.execute('BEGIN TRANSACTION')
    trancount, = conn.execute('SELECT 1').fetchone()
    conn.execute('COMMIT')
    eq_(trancount, 1)
    conn.close()
def setup():
    conn = pyodbc.connect(get_connection_string())
    conn.execute('''
    IF NOT EXISTS (SELECT * FROM sysobjects WHERE name='x' AND xtype='U')
    CREATE TABLE x(a INT PRIMARY KEY)
    ''')
    conn.commit()
    conn.execute('''
    IF NOT EXISTS (SELECT * FROM sysobjects WHERE name='y' AND xtype='U')
    CREATE TABLE y(b INT PRIMARY KEY)
    ''')
    conn.close()
Пример #5
0
def test_mars_autocommit_and_switching():
    conn = pyodbc.connect(get_connection_string(),
                          MARS_Connection='yes',
                          autocommit=True)
    conn.autocommit = False
    trancount, = conn.execute('SELECT @@TRANCOUNT').fetchone()
    eq_(trancount, 1)
    conn.commit()
    conn.autocommit = True
    trancount, = conn.execute('SELECT @@TRANCOUNT').fetchone()
    eq_(trancount, 0)
    conn.close()
def test_transaction_isolation_level_snapshot_2():
    conn_a = pyodbc.connect(get_connection_string())

    # set conn_b to transaction isolation level snapshot
    conn_b = pyodbc.connect(get_connection_string())
    conn_b.autocommit = True
    conn_b.execute('SET TRANSACTION ISOLATION LEVEL SNAPSHOT')
    conn_b.autocommit = False

    # If the content has changed
    conn_a.execute('INSERT INTO x(a) VALUES (1)')
    conn_a.commit()

    # then returns the normal result set (if not be known old result)
    (result, ), = conn_b.execute('SELECT * FROM x')
    eq_(result, 1)

    # teardown
    conn_a.execute('DELETE FROM x')
    conn_a.commit()
    conn_a.close()
    conn_b.close()
def test_y_does_not_exists():
    conn = pyodbc.connect(get_connection_string())
    conn.execute('SELECT * FROM y')
    ok_(True)
    conn.close()
def teardown():
    conn = pyodbc.connect(get_connection_string())
    conn.execute('DROP TABLE x')
    conn.commit()
    conn.close()
Пример #9
0
def test_mars_autocommit_will_fail():
    conn = pyodbc.connect(get_connection_string(),
                          MARS_Connection='yes',
                          autocommit=True)
    conn.execute('BEGIN TRANSACTION')
    '''
def test_connectivity():
    conn = pyodbc.connect(get_connection_string())
    conn.execute('SELECT 1')
    ok_(True)
    conn.close()
Пример #11
0
def test_get_connection_string():
    eq_(type(get_connection_string()), str)
def test_connect_without_autocommit_then_transaction_count_become_1():
    conn = pyodbc.connect(get_connection_string())
    trancount, = conn.execute('SELECT @@TRANCOUNT').fetchone()
    eq_(trancount, 1)
    conn.close()