python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > python操作MySQL

python操作MySQL的详细教程

作者:易辰君

PyMySQL 是一个纯 Python 的库,用于连接 MySQL 数据库,并执行 SQL 语句,该库的主要用途是通过 Python 代码与 MySQL 数据库进行交互,比如执行查询、插入数据、更新数据、删除数据等操作,本文介绍了python操作MySQL的详细教程,需要的朋友可以参考下

前言

PyMySQL 是一个纯 Python 的库,用于连接 MySQL 数据库,并执行 SQL 语句。它是 MySQLdb 的替代品,但不同于后者,PyMySQL 不需要 C 语言的依赖,因此更加轻量且易于安装和使用。该库的主要用途是通过 Python 代码与 MySQL 数据库进行交互,比如执行查询、插入数据、更新数据、删除数据等操作。

一、PyMySQL的特点

该库的特点主要有以下三点:

二、安装

PyMySQL 可以通过 pip 轻松安装:

pip install pymysql

三、基本用法

(一)连接MySQL数据库

在使用 PyMySQL 之前,你需要先连接到 MySQL 数据库。连接数据库时,通常需要提供数据库的主机地址、用户名、密码、数据库名等信息。

示例:

import pymysql
 
# 创建连接
connection = pymysql.connect(
    host='localhost',      # 数据库主机地址
    user='your_username',  # 数据库用户名
    password='your_password', # 数据库密码
    database='your_dbname',   # 选择的数据库
    charset='utf8mb4',     # 指定字符集
    cursorclass=pymysql.cursors.DictCursor  # 返回字典格式的数据
)
 
# 创建游标
cursor = connection.cursor()
 
# 关闭游标和连接
cursor.close()
connection.close()

(二)数据查询

使用游标对象来执行 SQL 查询并获取数据。

示例:

try:
    # 创建游标
    with connection.cursor() as cursor:
        # SQL 查询
        sql = "SELECT * FROM users WHERE age > %s"
        cursor.execute(sql, (25,))  # 使用参数化查询防止 SQL 注入
        # 获取结果
        results = cursor.fetchall()  # 返回所有结果
        for row in results:
            print(row)
finally:
    # 关闭连接
    connection.close()

(三)插入数据

执行插入操作时,可以使用 execute() 或 executemany() 方法。

示例:

try:
    with connection.cursor() as cursor:
        # SQL 插入语句
        sql = "INSERT INTO users (name, age, email) VALUES (%s, %s, %s)"
        # 执行单条插入
        cursor.execute(sql, ('John Doe', 30, 'john.doe@example.com'))
        
        # 执行多条插入
        users = [
            ('Alice', 25, 'alice@example.com'),
            ('Bob', 28, 'bob@example.com')
        ]
        cursor.executemany(sql, users)
    
    # 提交更改
    connection.commit()
finally:
    connection.close()

(四)更新和删除数据

类似于插入数据,更新和删除数都是通过 SQL 语句和 execute() 函数来完成。

示例:

try:
    with connection.cursor() as cursor:
        # SQL 更新语句
        sql = "UPDATE users SET email = %s WHERE name = %s"
        cursor.execute(sql, ('new.email@example.com', 'John Doe'))
    
    # 提交更改
    connection.commit()
finally:
    connection.close()

示例:

try:
    with connection.cursor() as cursor:
        # SQL 删除语句
        sql = "DELETE FROM users WHERE name = %s"
        cursor.execute(sql, ('John Doe',))
    
    # 提交更改
    connection.commit()
finally:
    connection.close()

(五)事务管理

MySQL 数据库支持事务,PyMySQL 默认启用了自动提交。如果你需要手动控制事务,可以关闭自动提交并在合适的时机提交或回滚。

示例:

try:
    # 关闭自动提交
    connection.autocommit(False)
 
    with connection.cursor() as cursor:
        # SQL 插入语句
        sql = "INSERT INTO users (name, age, email) VALUES (%s, %s, %s)"
        cursor.execute(sql, ('Chris', 27, 'chris@example.com'))
 
        # 人为错误,测试回滚
        raise Exception("人为触发异常")
 
    # 提交事务
    connection.commit()
except Exception as e:
    print(f"出现错误: {e}")
    # 回滚事务
    connection.rollback()
finally:
    connection.close()

四、游标类型

PyMySQL 提供了多种游标类型,适用于不同的场景:

使用不同游标类型可以通过 cursorclass 参数指定。例如:

# 字典游标
connection = pymysql.connect(
    host='localhost',
    user='your_username',
    password='your_password',
    database='your_dbname',
    charset='utf8mb4',
    cursorclass=pymysql.cursors.DictCursor  # 使用字典游标
)

五、安全性

为了防止 SQL 注入攻击,务必使用参数化查询,而不是将参数直接拼接到 SQL 字符串中。

示例:

# 不安全的写法
sql = f"SELECT * FROM users WHERE name = '{name}'"  # 容易导致 SQL 注入
 
# 安全的写法
sql = "SELECT * FROM users WHERE name = %s"
cursor.execute(sql, (name,))

六、常见错误处理

PyMySQL 中常见的错误处理可以通过捕获异常来完成:

import pymysql
 
try:
    connection = pymysql.connect(host='localhost', user='root', password='', database='test_db')
    cursor = connection.cursor()
except pymysql.MySQLError as e:
    print(f"数据库连接失败: {e}")

七、性能优化

八、总结

PyMySQL 是一个轻量级、易于使用的 Python 库,适合 Python 程序员与 MySQL 数据库进行交互。通过它,你可以高效地执行 SQL 查询、插入、更新和删除数据操作,同时还可以利用其事务支持、游标控制等高级功能。

以上就是python操作MySQL的详细教程的详细内容,更多关于python操作MySQL的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文