def _fetch_warnings(self): """ Fetch warnings doing a SHOW WARNINGS. Can be called after getting the result. Returns a result set or None when there were no warnings. """ res = [] try: c = self._connection.cursor() cnt = c.execute("SHOW WARNINGS") res = c.fetchall() c.close() except Exception as e: raise errors.InterfaceError( "Failed getting warnings; %s" % e) if self._connection.raise_on_warnings is True: msg = '; '.join([ "(%s) %s" % (r[1],r[2]) for r in res]) raise errors.get_mysql_exception(res[0][1],res[0][2]) else: if len(res): return res return None
def test_get_mysql_exception(self): tests = { errors.ProgrammingError: ( '24', '25', '26', '27', '28', '2A', '2C', '34', '35', '37', '3C', '3D', '3F', '42'), errors.DataError: ('02', '21', '22'), errors.NotSupportedError: ('0A',), errors.IntegrityError: ('23', 'XA'), errors.InternalError: ('40', '44'), errors.OperationalError: ('08', 'HZ', '0K'), errors.DatabaseError: ('07', '2B', '2D', '2E', '33', 'ZZ', 'HY'), } msg = 'Ham' for exp, errlist in tests.items(): for sqlstate in errlist: errno = 1000 res = errors.get_mysql_exception(errno, msg, sqlstate) self.assertTrue(isinstance(res, exp), "SQLState {0} should be {1}".format( sqlstate, exp.__name__)) self.assertEqual(sqlstate, res.sqlstate) self.assertEqual("{0} ({1}): {2}".format(errno, sqlstate, msg), str(res)) errno = 1064 sqlstate = "42000" msg = "You have an error in your SQL syntax" exp = "1064 (42000): You have an error in your SQL syntax" err = errors.get_mysql_exception(errno, msg, sqlstate) self.assertEqual(exp, str(err)) # Hardcoded exceptions self.assertTrue(isinstance(errors._ERROR_EXCEPTIONS, dict)) self.assertTrue( isinstance(errors.get_mysql_exception(1243, None, None), errors.ProgrammingError)) # Custom exceptions errors._CUSTOM_ERROR_EXCEPTIONS[1064] = errors.DatabaseError self.assertTrue( isinstance(errors.get_mysql_exception(1064, None, None), errors.DatabaseError)) errors._CUSTOM_ERROR_EXCEPTIONS = {}
def test_get_mysql_exception(self): tests = { errors.ProgrammingError: ('24', '25', '26', '27', '28', '2A', '2C', '34', '35', '37', '3C', '3D', '3F', '42'), errors.DataError: ('02', '21', '22'), errors.NotSupportedError: ('0A', ), errors.IntegrityError: ('23', 'XA'), errors.InternalError: ('40', '44'), errors.OperationalError: ('08', 'HZ', '0K'), errors.DatabaseError: ('07', '2B', '2D', '2E', '33', 'ZZ', 'HY'), } msg = 'Ham' for exp, errlist in tests.items(): for sqlstate in errlist: errno = 1000 res = errors.get_mysql_exception(errno, msg, sqlstate) self.assertTrue( isinstance(res, exp), "SQLState %s should be %s" % (sqlstate, exp.__name__)) self.assertEqual(sqlstate, res.sqlstate) self.assertEqual("%d (%s): %s" % (errno, sqlstate, msg), str(res)) errno = 1064 sqlstate = "42000" msg = "You have an error in your SQL syntax" exp = "1064 (42000): You have an error in your SQL syntax" err = errors.get_mysql_exception(errno, msg, sqlstate) self.assertEqual(exp, str(err)) # Hardcoded exceptions self.assertTrue(isinstance(errors._ERROR_EXCEPTIONS, dict)) self.assertTrue( isinstance(errors.get_mysql_exception(1243, None, None), errors.ProgrammingError)) # Custom exceptions errors._CUSTOM_ERROR_EXCEPTIONS[1064] = errors.DatabaseError self.assertTrue( isinstance(errors.get_mysql_exception(1064, None, None), errors.DatabaseError)) errors._CUSTOM_ERROR_EXCEPTIONS = {}
def _fetch_warnings(self): """ Fetch warnings doing a SHOW WARNINGS. Can be called after getting the result. Returns a result set or None when there were no warnings. """ res = [] try: cur = self._connection.cursor() cur.execute("SHOW WARNINGS") res = cur.fetchall() cur.close() except Exception as err: raise errors.InterfaceError("Failed getting warnings; %s" % err) if self._connection.raise_on_warnings is True: raise errors.get_mysql_exception(res[0][1], res[0][2]) else: if len(res): return res return None
def _fetch_warnings(self): """ Fetch warnings doing a SHOW WARNINGS. Can be called after getting the result. Returns a result set or None when there were no warnings. """ res = [] try: cur = self._connection.cursor() cur.execute("SHOW WARNINGS") res = cur.fetchall() cur.close() except StandardError as err: raise errors.InterfaceError, errors.InterfaceError( "Failed getting warnings; %s" % err), sys.exc_info()[2] if self._connection.raise_on_warnings is True: raise errors.get_mysql_exception(res[0][1], res[0][2]) else: if len(res): return res return None
Returns a result set or None when there were no warnings. """ res = [] try: c = self._connection.cursor() cnt = c.execute("SHOW WARNINGS") res = c.fetchall() c.close() except StandardError, e: raise errors.InterfaceError, errors.InterfaceError( "Failed getting warnings; %s" % e), sys.exc_info()[2] if self._connection.raise_on_warnings is True: msg = '; '.join(["(%s) %s" % (r[1], r[2]) for r in res]) raise errors.get_mysql_exception(res[0][1], res[0][2]) else: if len(res): return res return None def _handle_eof(self, eof): self._connection.unread_result = False self._nextrow = (None, None) self._warning_count = eof['warning_count'] if self._connection.get_warnings is True and eof['warning_count']: self._warnings = self._fetch_warnings() def _fetch_row(self): if not self._have_unread_result():
Returns a result set or None when there were no warnings. """ res = [] try: c = self._connection.cursor() cnt = c.execute("SHOW WARNINGS") res = c.fetchall() c.close() except StandardError, e: raise errors.InterfaceError, errors.InterfaceError( "Failed getting warnings; %s" % e), sys.exc_info()[2] if self._connection.raise_on_warnings is True: msg = '; '.join([ "(%s) %s" % (r[1],r[2]) for r in res]) raise errors.get_mysql_exception(res[0][1],res[0][2]) else: if len(res): return res return None def _handle_eof(self, eof): self._connection.unread_result = False self._nextrow = (None, None) self._warning_count = eof['warning_count'] if self._connection.get_warnings is True and eof['warning_count']: self._warnings = self._fetch_warnings() def _fetch_row(self): if not self._have_unread_result():