Python中MySQLdb库的使用指南:快速连接与操作MySQL数据库


在Python中,MySQLdb(也被称为MySQL-python)是一个经典的库,用于连接和操作MySQL数据库,它基于C语言开发,性能高效且稳定,是许多开发者操作MySQL的首选工具,本文将详细介绍如何安装MySQLdb,并通过代码示例演示如何建立数据库连接、执行SQL语句以及处理查询结果。

Python中的MySQLdb库怎么使用?


安装MySQLdb库

由于MySQLdb依赖于MySQL的C接口,安装前需确保系统已安装MySQL开发文件,对于不同环境,安装方式如下:

  • Linux(Ubuntu/Debian)

    sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
    pip install mysqlclient  # MySQLdb的PyPI包名为mysqlclient
  • macOS
    使用Homebrew安装MySQL或通过brew install mysql-client获取客户端库,再通过pip安装mysqlclient

  • Windows
    Windows安装稍复杂,建议直接使用预编译的.whl文件(从Unofficial Windows Binaries下载对应版本),然后通过pip install 文件名.whl安装。

注意:由于MySQLdb对Python3的兼容性在后续维护中由mysqlclient接管,因此推荐安装mysqlclient包。


连接MySQL数据库

安装完成后,通过以下代码建立与MySQL的连接:

import MySQLdb
try:
    # 建立数据库连接
    conn = MySQLdb.connect(
        host="localhost",       # 数据库服务器地址
        user="your_username",   # 用户名
        passwd="your_password", # 密码
        db="your_database",     # 数据库名称
        charset="utf8mb4"      # 字符集,确保支持中文等特殊字符
    )
    print("数据库连接成功!")
except MySQLdb.Error as e:
    print(f"连接失败,错误信息:{e}")

执行SQL语句

连接成功后,可通过游标(Cursor)对象执行SQL语句,包括创建表、插入数据、查询数据等操作。

  1. 创建表

    try:
     with conn.cursor() as cursor:  # 使用with语句自动管理游标关闭
         sql = """
         CREATE TABLE IF NOT EXISTS users (
             id INT AUTO_INCREMENT PRIMARY KEY,
             name VARCHAR(255) NOT NULL,
             age INT NOT NULL
         )
         """
         cursor.execute(sql)
     conn.commit()  # 提交事务
     print("表创建成功!")
    except MySQLdb.Error as e:
     print(f"操作失败:{e}")
  2. 插入数据

    try:
     with conn.cursor() as cursor:
         sql = "INSERT INTO users (name, age) VALUES (%s, %s)"
         cursor.execute(sql, ("Alice", 25))  # 参数化查询,防止SQL注入
     conn.commit()
     print("数据插入成功!")
    except MySQLdb.Error as e:
     print(f"插入失败:{e}")

查询数据

通过cursor.fetchone()cursor.fetchall()获取查询结果:

try:
    with conn.cursor(MySQLdb.cursors.DictCursor) as cursor:  # 返回字典格式结果
        cursor.execute("SELECT * FROM users")
        results = cursor.fetchall()  # 获取所有记录
        for row in results:
            print(f"ID: {row['id']}, 姓名: {row['name']}, 年龄: {row['age']}")
except MySQLdb.Error as e:
    print(f"查询失败:{e}")

关闭连接

操作完成后,务必关闭游标和数据库连接以释放资源:

try:
    if conn:
        conn.close()
        print("数据库连接已关闭。")
except MySQLdb.Error as e:
    print(f"关闭连接时出错:{e}")

注意事项

  1. 异常处理:始终使用try-except捕获MySQLdb.Error,确保程序健壮性。
  2. 参数化查询:避免直接拼接SQL字符串,使用%s占位符防止SQL注入攻击。
  3. 事务管理:数据变更操作(INSERT/UPDATE/DELETE)后需调用conn.commit()提交事务。
  4. 资源释放:使用with语句或手动关闭游标和连接,避免内存泄漏。

MySQLdb(或mysqlclient)是Python操作MySQL的高效工具,通过简单的API即可实现数据库的增删改查,本文从安装到基础操作提供了完整示例,适合快速上手,对于更复杂的需求(如连接池、ORM框架),可进一步探索DBUtilsSQLAlchemy等高级工具。

希望本文能帮助你掌握MySQLdb的使用!如有疑问,欢迎留言交流。

未经允许不得转载! 作者:python1991知识网,转载或复制请以超链接形式并注明出处Python1991知识网

原文地址:https://www.python1991.cn/5747.html发布于:2026-05-03