Python使用Pandas读写MySQL数据库的完整指南

顾言
顾言
发布时间:2026-10-15 | 5人浏览过
原创

本文详解如何在Python中利用Pandas库高效读写MySQL数据库。通过结合pymysql和SQLAlchemy,实现从数据库读取数据生成DataFrame,以及将DataFrame写入数据库表的操作。包含完整的连接配置、查询及写入代码示例,适用于大数据处理场景。

要在Python中实现Pandas对MySQL数据库的读写操作,必须安装并配置三个核心库。

  • Pandas
  • SQLAlchemy
  • PyMySQL

部分读者可能会疑惑,既然PyMySQL或SQLAlchemy能单独完成数据库交互,为何还要引入Pandas?这主要取决于应用场景。对于涉及大量数据处理的任务,使用Pandas进行数据库读写通常更加便捷高效。

1、使用read_sql_query读取MySQL数据

read_sql_query或read_sql方法均接受SQL语句作为参数,执行后返回DataFrame对象。这里简要说明:DataFrame是Pandas中的一种核心数据结构,其形态和功能类似于Excel表格,便于进行数据清洗和分析。


import pandas
from sqlalchemy import create_engine

class mysqlconn:
    def __init__(self):
        mysql_username = 'root'
        mysql_password = '123456'
        # 填写真实数库ip
        mysql_ip = 'x.x.x.x'
        port = 3306
        db = 'work'
        # 初始化数据库连接,使用pymysql库
        self.engine = create_engine('mysql+pymysql://{}:{}@{}:{}/{}'.format(mysql_username, mysql_password, mysql_ip, port,db))

    # 查询mysql数据库
    def query(self,sql):
        df  = pandas.read_sql_query(sql,self.engine)
        # df = pandas.read_sql(sql,self.engine)     这种读取方式也可以

        # 返回dateframe格式
        return df

if __name__ =='__main__':
    # 查询的 sql 语句 
    SQL = '''select * from working_time order by id desc '''
    # 调用 mysqlconn 类的 query() 方法
    df_data = mysqlconn().query(sql=SQL)

2、使用to_sql写入数据库

在使用to_sql方法将数据写入数据库之前,需先将待写入的数据转换为DataFrame格式。


import pandas
from sqlalchemy import create_engine

class mysqlconn:
    def __init__(self):
        mysql_username = 'root'
        mysql_password = '123456'
        # 填写真实数库ip
        mysql_ip = 'mysql.mall.svc.test.local'
        port = 3306
        db = 'work'
        # 初始化数据库连接,使用pymysql库
        self.engine = create_engine('mysql+pymysql://{}:{}@{}:{}/{}'.format(mysql_username, mysql_password, mysql_ip, port,db))

    # 查询mysql数据库
    def query(self,sql):
        df  = pandas.read_sql_query(sql,self.engine)
        # df = pandas.read_sql(sql,self.engine)

        # 返回dateframe格式
        return df

    # 写入mysql数据库
    def to_sql(self,table,df):
        # 第一个参数是表名
        # if_exists:有三个值 fail、replace、append
        # 1.fail:如果表存在,啥也不做
        # 2.replace:如果表存在,删了表,再建立一个新表,把数据插入
        # 3.append:如果表存在,把数据插入,如果表不存在创建一个表!!
        # index 是否储存index列
        df.to_sql(table, con=self.engine, if_exists='append', index=False)

if __name__ =='__main__':
    # 创建 dateframe 对象
    df = pandas.DataFrame([{'name':'小米','price':'3999','colour':'白色'},{'name':'华为','price':'4999','colour':'黑色'}])
    # 调用 mysqlconn 类的 to_sql() 方法
    mysqlconn().to_sql('phonetest',df)

插入数据库的具体数据示例如下:

以上即为Python基于Pandas读写MySQL数据库的详细内容,更多关于Python读写MySQL数据库的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表