Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
singlestore-labs
GitHub Repository: singlestore-labs/singlestoredb-python
Path: blob/main/singlestoredb/exceptions.py
469 views
1
#!/usr/bin/env python
2
"""Database exeception classes."""
3
from typing import Optional
4
5
6
class MySQLError(Exception):
7
"""All MySQL-related exceptions."""
8
9
10
class Error(MySQLError):
11
"""
12
Generic database exception.
13
14
Parameters
15
----------
16
errno : int
17
Database error code
18
msg : str
19
Database error message
20
sqlstate : str, optional
21
SQL engine state code
22
23
"""
24
25
def __init__(
26
self, errno: Optional[int] = None, msg: Optional[str] = None,
27
sqlstate: Optional[int] = None,
28
):
29
self.errno = errno
30
self.errmsg = msg
31
self.sqlstate = sqlstate
32
super(Exception, self).__init__(errno, msg, sqlstate)
33
34
def __str__(self) -> str:
35
"""Return string representation."""
36
prefix = []
37
if self.errno is not None:
38
prefix.append(f'{self.errno}')
39
if self.sqlstate is not None:
40
prefix.append(f'({self.sqlstate})')
41
if prefix and self.errmsg:
42
return ' '.join(prefix) + ': ' + self.errmsg
43
elif prefix:
44
return ' '.join(prefix)
45
elif self.errmsg:
46
return f'{self.errmsg}'
47
return 'Unknown error'
48
49
def __repr__(self) -> str:
50
"""Return string representation."""
51
return str(self)
52
53
@property
54
def msg(self) -> Optional[str]:
55
"""Return error message."""
56
return self.errmsg
57
58
59
class Warning(Warning, MySQLError): # type: ignore
60
"""Exception for important warnings like data truncations, etc."""
61
62
63
class InterfaceError(Error):
64
"""Exception for errors in the database interface rather than the database."""
65
66
67
class DatabaseError(Error):
68
"""General exception for errors in the database."""
69
70
71
class InternalError(DatabaseError):
72
"""Exception for internal database errors such as out of sync transactions."""
73
74
75
class OperationalError(DatabaseError):
76
"""Exception for operational errors such as unexpected disconnections."""
77
78
79
class ProgrammingError(DatabaseError):
80
"""Exception for programming errors."""
81
82
83
class IntegrityError(DatabaseError):
84
"""Exception for relational integrity errors."""
85
86
87
class DataError(DatabaseError):
88
"""Exception for problems with processed data like division by zero."""
89
90
91
class NotSupportedError(DatabaseError):
92
"""Exception for using unsupported features of the database."""
93
94
95
class ManagementError(Error):
96
"""Exception for errors in the management API."""
97
98
def __init__(
99
self, errno: Optional[int] = None, msg: Optional[str] = None,
100
response: Optional[str] = None,
101
):
102
self.errno = errno
103
self.errmsg = msg
104
self.response = response
105
super(Exception, self).__init__(errno, msg)
106
107
def __str__(self) -> str:
108
"""Return string representation."""
109
prefix = []
110
if self.errno is not None:
111
prefix.append(f'{self.errno}')
112
if self.response is not None:
113
prefix.append(f'({self.response})')
114
if prefix and self.errmsg:
115
return ' '.join(prefix) + ': ' + self.errmsg
116
elif prefix:
117
return ' '.join(prefix)
118
elif self.errmsg:
119
return f'{self.errmsg}'
120
return 'Unknown error'
121
122