Insert Operation
To insert data into a MySQL database using Python, the MySQL Connector or similar libraries such as pymysql
or SQLAlchemy
must be used. A step-by-step guide for how to insert a row into a MySQL table from Python using MySQL Connector follows:
1. Install MySQL Connector
Ensure you have the MySQL Connector installed. Use pip to install it if you haven’t already:
pip install mysql-connector-python
2. Setup MySQL Database
Ensure you have a MySQL database and table ready. For example:
CREATE DATABASE testdb;
USE testdb;
CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
age INT NOT NULL,
department VARCHAR(255)
);
3. Python Code for Insert Operation
Here’s a detailed Python example to insert data into the employees
table:
Import MySQL Connector
import mysql.connector
Step-by-Step Process
- Establish a Connection
Use the mysql.connector.connect()
method to connect to the database.
conn = mysql.connector.connect(
host="localhost", # Replace with your MySQL host
user="your_username", # Your MySQL username
password="your_password", # Your MySQL password
database="testdb" # Name of the database
)
2. Create a Cursor Object
A cursor is used to execute SQL commands.
cursor = conn.cursor()
3. Write the SQL Query
Use placeholders (%s
) for dynamic data to avoid SQL injection.
sql = "INSERT INTO employees (name, age, department) VALUES (%s, %s, %s)"
4. Define Data to Insert
Prepare the data as a tuple.
val = ("John Doe", 30, "HR")
5. Execute the Query
Use cursor.execute()
to execute the query.
cursor.execute(sql, val)
6. Commit the Transaction
Always commit the transaction to save changes in the database.
conn.commit()
print(cursor.rowcount, "record(s) inserted.")
7. Close the Connection
Clean up resources by closing the cursor and connection.
cursor.close()
conn.close()
Full Example Code
import mysql.connector
try:
# Step 1: Connect to the database
conn = mysql.connector.connect(
host="localhost",
user="your_username",
password="your_password",
database="testdb"
)
# Step 2: Create a cursor object
cursor = conn.cursor()
# Step 3: Define SQL query and data
sql = "INSERT INTO employees (name, age, department) VALUES (%s, %s, %s)"
val = ("Alice Smith", 25, "Finance")
# Step 4: Execute the query
cursor.execute(sql, val)
# Step 5: Commit the transaction
conn.commit()
print(cursor.rowcount, "record inserted.")
except mysql.connector.Error as err:
print("Error:", err)
finally:
# Step 6: Close the connection
if cursor:
cursor.close()
if conn:
conn.close()
4. Batch Insert for Multiple Records
To insert multiple rows in one query:
val = [
("Jane Doe", 28, "IT"),
("Mike Ross", 35, "Legal"),
("Rachel Zane", 30, "Marketing")
]
cursor.executemany(sql, val)
conn.commit()
print(cursor.rowcount, "records inserted.")
5. Best Practices
- Avoid SQL Injection: Never insert user input directly; always use placeholders (
%s)
. - Error Handling: Use
try.except
blocks to catch exceptions. - Resource Management: Ensure the cursor and connection are closed even if an error occurs (use
finally
).