文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

读取或存储DataFrames的数据到mysql中

2023-09-14 22:06

关注

如何把DataFrames数据存入数据库中,以MySQL为例进行说明

保存DataFrames到数据库

1. 创建数据库连接

import pymysqlfrom sqlalchemy import create_engine# 创建数据库连接engine = create_engine('mysql+pymysql://username:password@host:port/database')

username是数据库用户名,password是数据库密码,host是数据库主机名,本地即为localhostport是数据库端口号(默认为3306),database是要连接的数据库名。

2. 获取数据库连接对象

engine = create_engine(db_connection_string)

3. 将DataFrames信息写入数据库中

使用to_sql() 将数据写入到关系型数据库中的表中。

# 要写入的数据data = pd.DataFrame({'col1': [1, 2, 3], 'col2': ['A', 'B', 'C']})data.to_sql("data", engine, if_exists='append', index=False)print('写入成功')

to_sql() 语法如下:

DataFrame.to_sql(name, con, schema=None, if_exists='fail', index=True, index_label=None, chunksize=None, dtype=None, method=None)

参数说明:

name:要写入的目标表名。
con:已经创建好的数据库连接对象,可以是 SQLAlchemy 的引擎对象或数据库连接字符串。
schema:可选参数,要写入的目标表所属的数据库模式(schema)。
if_exists可选参数,指定写入时的行为。可选值包括 ‘fail’(默认,如果表已存在则抛出异常)‘replace’(如果表已存在则替换)‘append’(如果表已存在则追加)
index:可选参数,指定是否将 DataFrame 的索引写入到数据库表中,默认为 True。
index_label:可选参数,指定索引列的列名,默认为 None。
chunksize:可选参数,指定分批写入的大小。如果指定了该参数,将按照指定的大小将数据分批写入数据库,有助于处理大量数据。
dtype:可选参数,指定要写入的列的数据类型。它可以是字典、numpy.dtype 对象或 SQLAlchemy 的 TypeEngine 对象。
method:可选参数,指定写入数据的方法。可选值包括 ‘multi’(默认,使用多个插入语句)或 ‘single’(使用单个大插入语句)。

注意:

如果设置if_exists='replace',那么所执行的逻辑为:将数据库中已存在的表删除,并创建一个新的表。在实际项目环境中,是无法随意进行删库 操作的,所以推荐使用if_exists='append',如果需要多次执行,在每次写入数据前,先将该表中所有数据进行删除,再重新写入。

4.关闭连接对象

# 关闭连接对象engine.dispose()

在完成数据库操作后,需要调用 engine.dispose() 来关闭数据库连接

完整代码

import pymysqlfrom sqlalchemy import create_engine# 创建数据库连接engine = create_engine('mysql+pymysql://username:password@host:port/database')# 定义一个函数写入数据中def data_to_sql():    # 获取数据库连接对象    engine = create_engine(db_connection_string)    # 获取数据    period = find_data()    period.to_sql("data", con=engine, if_exists='append', index=False)    print('写入成功')    # 关闭连接对象    engine.dispose()

从数据库获取数据

# 从数据库中拿数据def get_data(start, end):    # 从缓存数据库中获取调拨数据    # 创建数据库连接    # 获取数据库连接对象    conn = create_engine(db_connection_string)# 使用参数绑定日期格式在 SQL 查询中选择指定日期范围内的数据    sql = "SELECT period  FROM `order_period` WHERE txdate BETWEEN {} AND {};"    .format(start, end)    # 使用 Pandas 的 read_sql 函数分块读取数据到 DataFrame 中    chunks = pd.read_sql(sql, conn)    # 关闭数据库连接    conn.dispose()    return chunks

在读取数据时,使用startend两个参数绑定日期范围,在 SQL 查询中选择指定日期范围内的数据。

来源地址:https://blog.csdn.net/Sherlee1213/article/details/130642392

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯