Python操作MySQL数据库主要依赖于Python的数据库API,以及特定的数据库驱动模块,如MySQLdb
(针对Python 2.x)和PyMySQL
(针对Python 3.x)。以下是如何使用Python操作MySQL数据库的详细介绍,包括安装驱动、连接数据库、执行SQL语句、事务处理和错误处理等。
安装MySQL驱动
对于Python 3.x,可以使用PyMySQL
模块。安装方法如下:
pip3 install PyMySQL
如果系统不支持pip
命令,可以使用源代码安装:
git clone https://github.com/PyMySQL/PyMySQL
cd PyMySQL
python3 setup.py install
连接数据库
使用PyMySQL
连接MySQL数据库的代码示例如下:
import pymysql
# 连接数据库
db = pymysql.connect(host='localhost', user='testuser', password='test123', database='TESTDB')
cursor = db.cursor()
执行SQL语句
创建数据库表
# 创建表EMPLOYEE
cursor.execute("""
CREATE TABLE IF NOT EXISTS EMPLOYEE (
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT
)
""")
db.commit()
插入数据
# 向EMPLOYEE表插入数据
try:
cursor.execute("INSERT INTO EMPLOYEE (FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES (%s, %s, %s, %s, %s)", ('John', 'Doe', 30, 'M', 4000))
db.commit()
except Exception as e:
db.rollback()
print("Error:", e)
查询数据
# 查询EMPLOYEE表
try:
cursor.execute("SELECT * FROM EMPLOYEE WHERE INCOME > %s", (3000,))
results = cursor.fetchall()
for row in results:
print(row)
except Exception as e:
print("Error:", e)
更新数据
# 更新EMPLOYEE表中的数据
try:
cursor.execute("UPDATE EMPLOYEE SET INCOME = INCOME + 100 WHERE LAST_NAME = %s", ('Doe',))
db.commit()
except Exception as e:
db.rollback()
print("Error:", e)
删除数据
# 从EMPLOYEE表中删除数据
try:
cursor.execute("DELETE FROM EMPLOYEE WHERE AGE > %s", (50,))
db.commit()
except Exception as e:
db.rollback()
print("Error:", e)
事务处理
在执行多个SQL语句时,确保数据的一致性和完整性,可以使用事务:
# 开始事务
db.autocommit(False)
try:
# 执行多个SQL语句
cursor.execute("UPDATE EMPLOYEE SET INCOME = INCOME - 100 WHERE LAST_NAME = %s", ('Doe',))
cursor.execute("INSERT INTO EMPLOYEE (FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES (%s, %s, %s, %s, %s)", ('Jane', 'Doe', 28, 'F', 3500))
# 提交事务
db.commit()
except Exception as e:
# 回滚事务
db.rollback()
print("Error:", e)
错误处理
在操作数据库时,可能会遇到各种错误和异常。可以通过try-except
语句来捕获并处理这些异常:
try:
# 执行数据库操作
pass
except pymysql.MySQLError as e:
# 处理MySQL相关的错误
print("MySQL error:", e)
except Exception as e:
# 处理其他错误
print("Error:", e)
完整代码案例
以下是一个完整的Python脚本,演示了如何使用PyMySQL
模块连接MySQL数据库,并执行创建表、插入、查询、更新和删除操作:
import pymysql
# 连接数据库
db = pymysql.connect(host='localhost', user='testuser', password='test123', database='TESTDB')
cursor = db.cursor()
# 创建表EMPLOYEE
cursor.execute("""
CREATE TABLE IF NOT EXISTS EMPLOYEE (
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT
)""")
db.commit()
# 插入数据
try:
cursor.execute("INSERT INTO EMPLOYEE (FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES (%s, %s, %s, %s, %s)", ('John', 'Doe', 30, 'M', 4000))
db.commit()
except Exception as e:
db.rollback()
print("Error inserting data:", e)
# 查询数据
try:
cursor.execute("SELECT * FROM EMPLOYEE WHERE INCOME > %s", (3000,))
results = cursor.fetchall()
for row in results:
print(row)
except Exception as e:
print("Error fetching data:", e)
# 更新数据
try:
cursor.execute("UPDATE EMPLOYEE SET INCOME = INCOME + 100 WHERE LAST_NAME = %s", ('Doe',))
db.commit()
except Exception as e:
db.rollback()
print("Error updating data:", e)
# 删除数据
try:
cursor.execute("DELETE FROM EMPLOYEE WHERE AGE > %s", (50,))
db.commit()
except Exception as e:
db.rollback()
print("Error deleting data:", e)
# 关闭数据库连接
db.close()
总结
通过上述介绍和代码示例,使用Python操作MySQL数据库,首先,需要安装相应的数据库驱动模块。然后,通过创建连接和游标对象来执行SQL语句。在执行过程中,应注意使用事务
来保证数据的一致性和完整性,并妥善处理可能出现的错误和异常。