Skip to content

Exception

Jahnvi Thakkar edited this page Feb 17, 2025 · 3 revisions

The mssql-python module defines a set of exceptions specified in the Python DB API to handle various database-related errors. Proper error handling is crucial for diagnosing issues and ensuring the robustness of your application.

Exception Classes
The module defines several custom exception classes that are inherited from Python's built-in Exception class. These classes represent different categories of database errors:

  • Warning: Represents general warnings.
  • OperationalError: Represents errors related to the database's operation.
  • DataError: Represents errors related to the data being processed.
  • IntegrityError: Represents errors related to data integrity constraints.
  • ProgrammingError: Represents errors related to the database programming interface.
  • NotSupportedError: Represents errors related to unsupported features.

Error Code Mapping
When an error occurs, the type of exception raised is determined by the SQLSTATE value provided by the database.

SQLSTATE Exception
0A000 mssql_python.NotSupportedError
40002 mssql_python.IntegrityError
22*** mssql_python.DataError
23*** mssql_python.IntegrityError
24*** mssql_python.ProgrammingError
25*** mssql_python.ProgrammingError
42*** mssql_python.ProgrammingError
HYT00 mssql_python.OperationalError
HYT01 mssql_python.OperationalError

For instance, a primary key violation (attempting to insert a duplicate key) will raise an IntegrityError.

Example Usage

Here is an example demonstrating how to use the custom exceptions in the mssql-python module:

from mssql_python import connect
from mssql_python.exceptions import DatabaseError, InterfaceError

try:
    # Establish a connection
    conn = connect("Server=ServerAddress;Database=myDataBase;UID=myUsername;PWD=myPassword;")
    # Create a cursor object
    cursor = conn.cursor()
    # Execute a query
    cursor.execute("SELECT * FROM Employees")
    # Fetch results
    rows = cursor.fetchall()
    for row in rows:
        print(row)
except DatabaseError as e:
    print(f"Database error occurred: {e}")
except InterfaceError as e:
    print(f"Interface error occurred: {e}")
finally:
    # Close the cursor and connection
    cursor.close()
    conn.close()
Clone this wiki locally