Python操作MySQL数据库及其代码示例

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语句。在执行过程中,应注意使用事务来保证数据的一致性和完整性,并妥善处理可能出现的错误和异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值