def test_st_server_status(self): config = self.connect_kwargs.copy() cmy = MySQL(buffered=True) self.assertEqual(0, cmy.st_server_status()) cmy.connect(**config) self.assertTrue(cmy.st_server_status() & ServerFlag.STATUS_AUTOCOMMIT) cmy.autocommit(False) self.assertFalse(cmy.st_server_status() & ServerFlag.STATUS_AUTOCOMMIT) cmy.query("START TRANSACTION") self.assertTrue(cmy.st_server_status() & ServerFlag.STATUS_IN_TRANS) cmy.query("ROLLBACK") self.assertFalse(cmy.st_server_status() & ServerFlag.STATUS_IN_TRANS)
def test_autocommit(self): cmy1 = MySQL(buffered=True) cmy1.connect(**self.connect_kwargs) cmy2 = MySQL(buffered=True) cmy2.connect(**self.connect_kwargs) self.assertRaises(ValueError, cmy1.autocommit, 'ham') self.assertRaises(ValueError, cmy1.autocommit, 1) self.assertRaises(ValueError, cmy1.autocommit, None) table = "autocommit_test" # For the test we start off by making sure the autocommit is off # for both sessions cmy1.query("SELECT @@global.autocommit") if cmy1.fetch_row()[0] != 1: cmy1.query("SET @@session.autocommit = 0") cmy2.query("SET @@session.autocommit = 0") cmy1.query("DROP TABLE IF EXISTS {0}".format(table)) cmy1.query("CREATE TABLE {0} (c1 INT)".format(table)) # Turn AUTOCOMMIT on cmy1.autocommit(True) cmy1.query("INSERT INTO {0} (c1) VALUES " "(1), (2), (3)".format(table)) cmy2.query("SELECT * FROM {0}".format(table)) self.assertEqual(3, cmy2.num_rows()) rows = fetch_rows(cmy2) # Turn AUTOCOMMIT off cmy1.autocommit(False) cmy1.query("INSERT INTO {0} (c1) VALUES " "(4), (5), (6)".format(table)) cmy2.query("SELECT * FROM {0} WHERE c1 > 3".format(table)) self.assertEqual([], fetch_rows(cmy2)) cmy1.commit() cmy2.query("SELECT * FROM {0} WHERE c1 > 3".format(table)) self.assertEqual([(4, ), (5, ), (6, )], fetch_rows(cmy2)) cmy1.query("DROP TABLE IF EXISTS {0}".format(table)) cmy1.close() cmy2.close()
def test_autocommit(self): cmy1 = MySQL(buffered=True) cmy1.connect(**self.connect_kwargs) cmy2 = MySQL(buffered=True) cmy2.connect(**self.connect_kwargs) self.assertRaises(ValueError, cmy1.autocommit, 'ham') self.assertRaises(ValueError, cmy1.autocommit, 1) self.assertRaises(ValueError, cmy1.autocommit, None) table = "autocommit_test" # For the test we start off by making sure the autocommit is off # for both sessions cmy1.query("SELECT @@global.autocommit") if cmy1.fetch_row()[0] != 1: cmy1.query("SET @@session.autocommit = 0") cmy2.query("SET @@session.autocommit = 0") cmy1.query("DROP TABLE IF EXISTS {0}".format(table)) cmy1.query("CREATE TABLE {0} (c1 INT)".format(table)) # Turn AUTOCOMMIT on cmy1.autocommit(True) cmy1.query("INSERT INTO {0} (c1) VALUES " "(1), (2), (3)".format(table)) cmy2.query("SELECT * FROM {0}".format(table)) self.assertEqual(3, cmy2.num_rows()) rows = fetch_rows(cmy2) # Turn AUTOCOMMIT off cmy1.autocommit(False) cmy1.query("INSERT INTO {0} (c1) VALUES " "(4), (5), (6)".format(table)) cmy2.query("SELECT * FROM {0} WHERE c1 > 3".format(table)) self.assertEqual([], fetch_rows(cmy2)) cmy1.commit() cmy2.query("SELECT * FROM {0} WHERE c1 > 3".format(table)) self.assertEqual([(4,), (5,), (6,)], fetch_rows(cmy2)) cmy1.query("DROP TABLE IF EXISTS {0}".format(table)) cmy1.close() cmy2.close()
def test_st_server_status(self): config = self.connect_kwargs.copy() cmy = MySQL(buffered=True) self.assertEqual(0, cmy.st_server_status()) cmy.connect(**config) self.assertTrue( cmy.st_server_status() & ServerFlag.STATUS_AUTOCOMMIT) cmy.autocommit(False) self.assertFalse( cmy.st_server_status() & ServerFlag.STATUS_AUTOCOMMIT) cmy.query("START TRANSACTION") self.assertTrue( cmy.st_server_status() & ServerFlag.STATUS_IN_TRANS) cmy.query("ROLLBACK") self.assertFalse( cmy.st_server_status() & ServerFlag.STATUS_IN_TRANS)