Python如何读取MySQL数据库:从连接到数据查询的完整指南

Python读取MySQL数据库的核心方法是使用mysql-connector-pythonPyMySQL等第三方库,通过建立连接、执行SQL语句并获取结果来实现数据交互。 以下将详细介绍从环境配置到实际操作的完整步骤,帮助您快速掌握Python与MySQL的数据读取技巧。

环境准备与库安装

首先确保已安装Python(建议3.6以上版本)和MySQL数据库,常用的MySQL连接库有:

python 如何读取mysql,Python高效读取MySQL数据方法

  • mysql-connector-python(官方驱动)
  • PyMySQL(纯Python实现)
  • SQLAlchemy(ORM工具)

通过pip安装驱动库(以mysql-connector为例):

pip install mysql-connector-python

建立数据库连接

使用connect()函数创建连接对象,需提供主机、用户名、密码和数据库名等参数:

import mysql.connector
conn = mysql.connector.connect(
    host="localhost",
    user="your_username",
    password="your_password",
    database="your_database"
)

注意:生产环境中应将敏感信息存储在环境变量或配置文件中。

创建游标执行查询

连接成功后创建游标对象,用于执行SQL语句:

cursor = conn.cursor()
cursor.execute("SELECT * FROM employees")

游标是数据库操作的关键接口,支持数据遍历和结果获取。

获取查询结果

根据需求选择不同的结果获取方式:

  • fetchall():获取所有行
  • fetchone():获取下一行
  • fetchmany(size):获取指定数量行
# 获取全部数据
rows = cursor.fetchall()
for row in rows:
    print(row)
# 获取列名信息
column_names = [desc[0] for desc in cursor.description]

使用参数化查询

为防止SQL注入,务必使用参数化查询

# 安全的方式
query = "SELECT * FROM products WHERE category = %s AND price > %s"
cursor.execute(query, ('Electronics', 100))

将数据转换为Pandas DataFrame

对于数据分析场景,可结合Pandas处理结果:

import pandas as pd
df = pd.read_sql("SELECT * FROM sales", conn)
print(df.head())

完整示例代码

import mysql.connector
import pandas as pd
def read_mysql_data():
    try:
        # 建立连接
        conn = mysql.connector.connect(
            host="localhost",
            user="test_user",
            password="secure_pass",
            database="company_db"
        )
        # 执行查询
        query = "SELECT id, name, department FROM employees WHERE active = %s"
        df = pd.read_sql(query, conn, params=(1,))
        print(f"读取到{len(df)}条记录")
        return df
    except mysql.connector.Error as err:
        print(f"数据库错误: {err}")
    finally:
        if 'conn' in locals() and conn.is_connected():
            conn.close()

连接池与性能优化

对于高频查询应用,建议使用连接池提升性能:

from mysql.connector import pooling
connection_pool = pooling.MySQLConnectionPool(
    pool_name="mypool",
    pool_size=5,
    **db_config
)

错误处理与资源释放

务必确保连接正确关闭,避免资源泄漏:

try:
    conn = mysql.connector.connect(**config)
    # 执行操作
except mysql.connector.Error as e:
    print(f"错误代码: {e.errno}, 错误信息: {e.msg}")
finally:
    if conn.is_connected():
        cursor.close()
        conn.close()

Python读取MySQL数据库主要涉及连接建立、SQL执行和结果处理三个核心环节。关键要点包括:选择适合的驱动库、使用参数化查询确保安全、及时释放连接资源,以及根据场景选择合适的数据获取方式,掌握这些基础操作后,可进一步学习ORM框架或异步查询等高级特性,构建更高效的数据应用。

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

原文地址:https://www.html4.cn/14692.html发布于:2026-09-03