Python MySQL Error Handling Explained with Examples

When you interact with mysql database using python, you can use try-except blocks to capture and handle exceptions that may occur during database operations.

Try-Except in MySQL

import mysql.connector
from mysql.connector import Error

try:
    # Establish a connection to the MySQL database
    connection = mysql.connector.connect(
        host='localhost',
        database='mydatabase',
        user='myuser',
        password='mypassword'
    )

    if connection.is_connected():
        db_info = connection.get_server_info()
        print(f'Connected to MySQL Server version {db_info}')

        # Perform database operations (e.g., querying, inserting, updating)

except Error as e:
    print(f"Error connecting to MySQL database: {e}")

finally:
    # Close the database connection
    if 'connection' in locals():
        connection.close()
        print("MySQL connection is closed")

In this example, the try block attempts to connect to a MySQL database using mysql.connector.connect() and executes database operations.

If an exception occurs during the database operations, it is captured by the except block, where the specific error message is printed.

The finally block ensures that the database connection is closed, even if an exception occurs or not.

Common MySQL Connector Errors

  • mysql.connector.Error: Generic exception class for MySQL errors.
  • mysql.connector.InterfaceError: Interface errors such as connection errors.
  • mysql.connector.OperationalError: Errors related to operational problems like query execution errors.
  • mysql.connector.ProgrammingError: Errors in SQL syntax or programming logic.
  • mysql.connector.IntegrityError: Errors related to data integrity constraints.

Handling Specific MySQL Errors

try:
    # Database operations
except mysql.connector.IntegrityError as e:
    print(f"IntegrityError: {e}")
except mysql.connector.ProgrammingError as e:
    print(f"ProgrammingError: {e}")
except mysql.connector.Error as e:
print(f"MySQL error: {e}")

By handling errors at different granularity levels, you can provide more specific error messages or perform custom actions based on the type of error encountered during MySQL database operations.