Skip to content

MySQL Database Connection - PythonΒΆ

import mysql.connector
from mysql.connector import Error
import sys

def connect_to_mysql(host='localhost', database='school_db', 
                   user='root', password='password'):
    """
    Connect to MySQL database with error handling

    Args:
        host (str): MySQL server host
        database (str): Database name
        user (str): Username
        password (str): Password

    Returns:
        tuple: (connection, error_message)
    """
    connection = None

    try:
        connection = mysql.connector.connect(
            host=host,
            database=database,
            user=user,
            password=password
        )

        if connection.is_connected():
            print(f"βœ… Connected to MySQL database '{database}'")
            return connection, None

    except Error as e:
        error_msg = f"❌ Error connecting to MySQL: {e}"
        print(error_msg)
        return None, error_msg

    return connection, None

def test_connection(connection):
    """Test if connection is active"""
    if connection and connection.is_connected():
        cursor = connection.cursor()
        cursor.execute("SELECT DATABASE()")
        db_name = cursor.fetchone()
        print(f"πŸ“Š Current database: {db_name[0]}")
        cursor.close()
        return True
    return False

def close_connection(connection):
    """Safely close database connection"""
    if connection and connection.is_connected():
        connection.close()
        print("πŸ”Œ MySQL connection closed")

# Usage Example
if __name__ == "__main__":
    # Connect to database
    conn, error = connect_to_mysql()

    if conn:
        # Test connection
        test_connection(conn)

        # Your database operations here

        # Close connection
        close_connection(conn)
    else:
        print(f"Connection failed: {error}")
        sys.exit(1)

πŸ› οΈ Common Connection ParametersΒΆ

Parameter Example Description
host 'localhost' MySQL server address
database 'school_db' Database name to connect
user 'root' MySQL username
password 'password' MySQL password
port 3306 MySQL port (optional)

πŸ”§ Connection String VariationsΒΆ

With PortΒΆ

connection = mysql.connector.connect(
    host='localhost',
    port=3306,
    database='school_db',
    user='root',
    password='password'
)

Remote DatabaseΒΆ

connection = mysql.connector.connect(
    host='your-server.com',
    database='production_db',
    user='app_user',
    password='secure_password'
)

⚠️ Common Errors & Solutions¢

Error Cause Solution
Access denied for user Wrong username/password Check credentials
Can't connect to MySQL server Server not running Start MySQL service
Unknown database Database doesn't exist Create database first
Connection timeout Network/firewall issues Check firewall settings

πŸ“š InstallationΒΆ

# Install MySQL connector
pip install mysql-connector-python

# Alternative: PyMySQL
pip install pymysql

πŸ“š Learn Database Theory β†’