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()
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()
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()
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()
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()