Python教程:使用pymysql库操作Mysql数据库

一、什么是 pymysql

pymysql 是一个 Python 库,用于连接和操作 MySQL 数据库。通过 pymysql,Python 程序员可以轻松地与 MySQL 数据库进行交互,执行 SQL 查询,以及插入、更新或删除数据。

主要功能和特点

  1. 纯 Python 实现:与某些其他 MySQL 库相比,pymysql 是纯 Python 实现的,不需要任何 C 语言的依赖项。
  2. 线程安全pymysql 是线程安全的,这意味着它可以在多线程环境中安全地使用。
  3. 连接池支持:虽然 pymysql 本身不提供连接池,但它可以与其他连接池库(如 DBUtils)一起使用,以提供更高效、更稳定的数据库连接。
  4. 支持大部分 MySQL 功能pymysql 支持大部分 MySQL 的 SQL 语法和功能,包括事务、存储过程等。
  5. 与 Python DB-API 兼容pymysql 遵循 Python DB-API 2.0 规范,因此与其他数据库库相比,其使用方式非常相似。
  6. 安装和使用简单:只需使用 pip install pymysql 命令即可轻松安装。使用上也相对直观和简单。

二、安装 pymysql

安装 pymysql 非常简单,你可以使用 Python 的包管理工具 pip 来完成安装。以下是安装步骤:

  1. 打开命令行工具(在 Windows 上是 CMD 或 PowerShell,在 macOS 或 Linux 上是 Terminal)。

  2. 输入以下命令来安装 pymysql

    pip install pymysql
    

    或者,如果你使用的是 Python 3,并且系统中同时安装了 Python 2 和 Python 3,你可能需要使用 pip3 命令:

    pip3 install pymysql
    

三、基本使用方法

1. 建立连接

import pymysql

connection = pymysql.connect(
    host='localhost',    # 数据库服务器地址
    user='user',        # 数据库用户
    password='passwd',  # 数据库密码
    db='db',            # 数据库名称
    charset='utf8mb4',  # 连接字符集(兼容更多的文字)
    cursorclass=pymysql.cursors.DictCursor)  # 使用字典游标,返回的结果将是字典形式

2. 执行查询

try:
    with connection.cursor() as cursor:
        # 执行 SQL 查询语句
        cursor.execute("SELECT * FROM `users` WHERE `email`=%s", ('webmaster@python.org',))
        # 获取查询结果集中的所有记录
        results = cursor.fetchall()
        for row in results:
            print(row)  # 打印每一行结果
finally:
    connection.close()  # 关闭连接

3. 执行插入、更新或删除操作

对于修改数据的操作,你还需要调用 connection.commit() 来提交更改。

try:
    with connection.cursor() as cursor:
        # 执行 SQL 插入语句
        cursor.execute("INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)", ('webmaster@python.org', 'very-secret'))
    # 提交事务
    connection.commit()
    
    with connection.cursor() as cursor:
        # 更新数据操作...
        pass
    # 提交事务
    connection.commit()
    
    with connection.cursor() as cursor:
        # 删除数据操作...
        pass
    # 提交事务
    connection.commit()
finally:
    connection.close()  # 关闭连接

注意:为了防止 SQL 注入攻击,永远不要直接使用字符串拼接 SQL 语句。始终使用参数化查询,如上面的示例所示。

总之,pymysql 是一个功能强大、易于使用的 Python MySQL 库,适用于与 MySQL 数据库进行交互的各种场景。

四、使用示例

以下是一个包含增(INSERT)、删(DELETE)、改(UPDATE)和查(SELECT)操作的 pymysql 实际使用示例。

import pymysql

# 数据库连接配置
config = {
    'host': 'localhost',
    'user': 'your_username',
    'password': 'your_password',
    'db': 'your_database',
    'charset': 'utf8mb4',
    'cursorclass': pymysql.cursors.DictCursor
}

# 建立数据库连接
connection = pymysql.connect(**config)

try:
    with connection.cursor() as cursor:
        # 增 - INSERT
        sql_insert = "INSERT INTO `users` (`name`, `email`) VALUES (%s, %s)"
        cursor.execute(sql_insert, ('Alice', 'alice@example.com'))
        connection.commit()  # 提交事务
        print("Inserted a new user.")

        # 查 - SELECT
        sql_select = "SELECT * FROM `users` WHERE `email` = %s"
        cursor.execute(sql_select, ('alice@example.com',))
        result = cursor.fetchone()
        print("Retrieved user:", result)

        # 改 - UPDATE
        sql_update = "UPDATE `users` SET `name` = %s WHERE `email` = %s"
        cursor.execute(sql_update, ('Alice Updated', 'alice@example.com'))
        connection.commit()  # 提交事务
        print("Updated user name.")

        # 再次查询以验证更新
        cursor.execute(sql_select, ('alice@example.com',))
        result = cursor.fetchone()
        print("Updated user:", result)

        # 删 - DELETE
        sql_delete = "DELETE FROM `users` WHERE `email` = %s"
        cursor.execute(sql_delete, ('alice@example.com',))
        connection.commit()  # 提交事务
        print("Deleted user.")

finally:
    connection.close()  # 关闭数据库连接

在这个示例中,请将 'your_username', 'your_password', 'your_database' 替换为你的数据库实际用户名、密码和数据库名。同时,请确保你的数据库中有一个名为 users 的表,该表至少包含 nameemail 两个字段。

这个脚本首先插入一条新用户记录,然后查询并打印该用户的信息。接着,它更新用户的名字并再次查询以验证更新。最后,它删除刚刚插入的用户记录。

请注意,每次执行修改数据的操作后,都需要调用 connection.commit() 来提交事务,以确保数据被永久保存到数据库中。如果省略了提交操作,那么当连接关闭时,所有未提交的更改都将丢失。

作者:顽石九变

物联沃分享整理
物联沃-IOTWORD物联网 » Python教程:使用pymysql库操作Mysql数据库

发表回复