Python's simplicity and extensive library ecosystem make it an ideal choice for managing MySQL databases. Connecting to a MySQL database using Python allows developers and administrators to interact with data directly from scripts or applications, enabling automated database operations, data analysis, and dynamic web and desktop applications that rely on stored data.
In this tutorial, you will learn how to connect to a MySQL database using Python, execute queries, and manage data efficiently.

Prerequisites
- Python 3.x installed (see how to install Python on Ubuntu, Windows, macOS, Rocky Linux).
- MySQL server installed (install MySQL on Ubuntu, Windows server, Rocky Linux).
- A MySQL user account with root privileges.
Connect to MySQL Database Using MySQL Connector and Python
The official MySQL Connector/Python library is Oracle's supported driver for connecting Python applications to MySQL. It is written entirely in Python, which makes it easy to install, configure, and use on any system without additional dependencies.
You can use it to automate database operations, run queries directly from scripts, or integrate MySQL into your applications.
Follow the steps below to connect Python to your MySQL database using the MySQL connector.
Step 1: Install MySQL Connector
If you are working on a specific project, it is best to install the connector inside a virtual environment so the dependency is isolated.
Follow the steps below:
1. Open the terminal (Command Prompt on Windows or Terminal on Linux/macOS), and run the following command to create a virtual environment:
For Linux/macOS:
python3 -m venv env
source env/bin/activate

For Windows:
python -m venv env
env\Scripts\activate
2. Install the connector inside that environment:
pip install mysql-connector-python

Step 2: Import the Library
Open your preferred text editor or IDE (for example, nano) and create a new file, such as connect_mysql.py.
At the top of your file, import the MySQL connector module to enable database operations:
import mysql.connector
If you plan to handle errors explicitly (recommended for production scripts), also import the Error class from the same module:
from mysql.connector import Error
This lets you catch and manage connection or query errors gracefully in a try/except block later in your code.
Step 3: Establish a Connection
Next, define the connection parameters and connect to your MySQL server.
Take these steps:
1. In the file we created in the previous step, paste the following below the import code lines:
try:
conn = mysql.connector.connect(
host="localhost",
user="root",
password="your_password",
database="your_database"
)
if conn.is_connected():
print("Connected to MySQL successfully.")
except Error as e:
print("Error while connecting to MySQL:", e)
Replace "localhost" with your hostname, "root" with your actual MySQL username, "your_password" with your MySQL password for that user, and "your_database" with the database name you plan to use. For example:

2. Save and exit the file.
3. Run the script to check if the connection works:
python connect_mysql.py

The code above attempts to connect to the MySQL server using the provided credentials. If the credentials are invalid or the server is down, the Error class catches the issue and prints an informative message instead of stopping the script.
Step 4: Create Cursor, Execute a Query, and Close the Connection
Once the connection is active, create a cursor object to run SQL commands. A cursor acts as a pointer to interact with the database. Note that a cursor is not thread-safe and should not be reused across multiple threads or connections.
Follow these steps:
1. Add the following to your existing script (below the connection code):
if conn.is_connected():
cursor = conn.cursor()
# Run a simple query to confirm the connection
cursor.execute("SELECT DATABASE();")
record = cursor.fetchone()
print("You're connected to database:", record)
# Run another query to fetch current server time
cursor.execute("SELECT NOW();")
current_time = cursor.fetchone()
print("Current time on server:", current_time)
# Close the cursor and connection
cursor.close()
conn.close()
print("MySQL connection closed.")
The fetchone() method retrieves the first row of the result set. In this case, it confirms which database you are connected to.
Note: This example shows how to use the SELECT statement, but you can use other queries, including INSERT for write operations.
2. Save and exit the file.
3. Run the script:
python3 connect_mysql.py

Whenever you run the script (python connect_mysql.py), Python connects to MySQL, executes the query, prints the result, and then exits.
Connect to MySQL Database Using PyMySQL
PyMySQL is a lightweight, pure-Python MySQL client library that requires no external dependencies or compiled extensions. It is fully compatible with MySQLdb, which means you can use the same syntax and structure as other popular MySQL connectors.
It is a great choice for environments where installing native libraries is not possible or for applications that need portability across operating systems.
Follow the steps below to connect Python to MySQL using PyMySQL.
Step 1: Install PyMySQL
As with any Python project, consider installing PyMySQL inside a virtual environment for isolation.
Follow these steps:
1. Open the terminal/command prompt and create a virtual environment:
python -m venv env
2. Activate the virtual environment using the command for your OS.
For Linux/macOS:
source env/bin/activate
For Windows:
env\Scripts\activate
3. Install PyMySQL inside that environment:
pip install PyMySQL

Step 2: Import the Library
Create a new file, for example, connect_pymysql.py, and open it in your text editor.
At the top of the file, import the PyMySQL module and its error class:
import pymysql
from pymysql import MySQLError
You will use pymysql to establish a connection and execute queries against the MySQL database, and MySQLError to handle any connection or query errors gracefully.
Step 3: Establish a Connection
Use the connect() method to create a connection object. This function authenticates you with the MySQL server and sets up communication between Python and MySQL.
1. Add the following code to your file:
try:
conn = pymysql.connect(
host="localhost", # or IP address / remote host
user="root", # MySQL username
password="your_password",
database="your_database"
)
print("Connection established successfully.")
except MySQLError as e:
print("Error while connecting to MySQL:", e)
Replace "localhost" with your hostname, "root" with your actual MySQL username, "your_password" with your MySQL password for that user, and "your_database" with the database name you plan to use. For example:

2. Save and exit the file.
3. Run the file from your terminal using:
python connect_pymysql.py

If the connection is successful, you will see a confirmation message.
Step 4: Create a Cursor, Execute Queries, and Close the Connection
Once connected, create a cursor to interact with the database. Cursors let you send SQL statements and retrieve results.
1. Below your connection code, add:
if conn.open:
cursor = conn.cursor()
# Fetch the current server time
cursor.execute("SELECT NOW();")
time_now = cursor.fetchone()
print("Current time:", time_now)
# Close cursor and connection
cursor.close()
conn.close()
print("MySQL connection closed.")
2. Save and exit the file.
3. Run the script:
python3 connect_pymysql.py

The output shows that the connection is established, executes your queries, and then closes the session properly.
Connect to MySQL Database Using mysqlclient
mysqlclient is a Python wrapper around the native MySQL C client library. It is the most efficient option performance-wise, making it ideal for production systems or data-intensive applications.
Unlike pure-Python connectors, mysqlclient requires system dependencies, but in exchange, it provides faster query execution and lower latency.
The steps below show how to connect to MySQL using mysqlclient.
Step 1: Install mysqlclient
Before installing the Python package, make sure the required system libraries and header files are present.
On Debian-based Linux systems, run:
sudo apt install python3-dev default-libmysqlclient-dev build-essential
On macOS, you can install MySQL client tools using Homebrew:
brew install mysql-client
Note: If you are using a virtual environment, make sure it is activated before installing the Python module. It is a good idea to install it in a virtual environment to isolate it from the rest of the system.
2. Next, install the Python module:
pip install mysqlclient

Step 2: Import the Library
Create a new file called connect_mysqlclient.py and open it in your editor.
Import the library as follows:
import MySQLdb
MySQLdb is the module name you will use, even though the package installed is mysqlclient.
Step 3: Establish a Connection
Use the connect() function to create a connection to your MySQL database.
Follow these steps:
1. Add the following code below the import statement:
try:
conn = MySQLdb.connect(
host="localhost",
user="root",
passwd="your_password",
db="your_database"
)
print("Connected to MySQL successfully.")
except MySQLdb.Error as e:
print("Error while connecting to MySQL:", e)
Replace "localhost" with your hostname, "root" with your actual MySQL username, "your_password" with your MySQL password for that user, and "your_database" with the database name you plan to use. For example:

2. Save and exit the file.
3. Run the script in the terminal:
python3 connect_mysqlclient.py
If successful, the confirmation message appears in the output:

Step 4: Create a Cursor, Execute a Query, and Close Connection
Once connected, you can create a cursor and execute SQL statements to interact with the database.
1. Add the following code to your script:
if conn:
cursor = conn.cursor()
# Example query: fetch current server time
cursor.execute("SELECT NOW();")
time_now = cursor.fetchone()
print("Current time:", time_now)
# Always close cursor and connection
cursor.close()
conn.close()
print("MySQL connection closed.")
2. Save and exit the file.
3. Execute the script:
python3 connect_mysqlclient.py

The script connects to MySQL, prints the current server time, and closes the connection.
Conclusion
This tutorial showed how to connect to MySQL via Python using three different methods: MySQL Connector, PyMySQL, and mysqlclient. Each option offers distinct advantages depending on your needs. With the right connector, you can seamlessly integrate MySQL into your Python scripts or applications for efficient data management and automation.
Next, check out our Python Poetry guide for beginners or see how to read a file line by line in Python.



