Python--将文本和JSON文件数据导入MySQL数据库

1. 概述

本案例展示了如何从文本文件和JSON文件中读取销售数据,并将这些数据导入到MySQL数据库中。

2. 代码分析

  • 首先,代码从file_define_mysql模块导入TextFileReaderJsonFileReader类,用于读取文本和JSON格式的文件。
  • 接着,从data_define_mysql模块导入Record类,该类用于封装每条销售记录。
  • 使用TextFileReaderJsonFileReader读取文件数据,并将得到的记录列表合并为一个列表all_data
  • 然后,使用pymysql库建立与MySQL数据库的连接,并创建游标对象。
  • 选择数据库py_sql,并对all_data中的每条记录构造插入语句,执行插入操作,将数据写入orders表。
  • 最后,关闭数据库连接。

3. 关键点

  • 文件读取:使用TextFileReaderJsonFileReader读取不同格式的文件数据。
  • 数据封装:使用Record类封装每条记录,方便后续处理。
  • 数据库连接:使用pymysql.Connection创建数据库连接对象。
  • 数据插入:构造SQL插入语句,使用游标执行,将数据导入数据库。

4. 扩展应用

  • 批量插入:考虑使用批量插入以提高数据导入效率。
  • 事务处理:在执行多条插入语句时,使用事务可以保证数据的一致性。
  • 异常处理:增加异常处理机制,确保在文件读取或数据库操作失败时能够给出提示并进行适当的处理。

5. 代码示例扩展

以下是一些代码的扩展示例:

from pymysql import Connection, Error

try:
    # 构建MySQL连接
    conn = Connection(
        host="localhost",
        port=3306,
        user="root",
        password="123456",
        autocommit=False  # 关闭自动提交,使用事务
    )
    cursor = conn.cursor()

    # 选择数据库
    conn.select_db("py_sql")

    # 读取文件数据并合并
    # ... 省略文件读取代码 ...

    # 执行批量插入
    for record in all_data:
        sql = f"insert into orders(order_date, order_id, money, province) " \
              f"values(%s, %s, %s, %s)"
        cursor.execute(sql, (record.date, record.order_id, record.money, record.province))

    # 提交事务
    conn.commit()

except Error as e:
    print("数据库操作失败:", e)
    conn.rollback()  # 发生错误时回滚事务
finally:
    # 确保游标和连接被正确关闭
    if conn:
        conn.close()

6. 编程规范

  • 事务管理:在进行数据库写入操作时,使用事务可以提高数据安全性。
  • 参数化查询:使用参数化查询可以防止SQL注入攻击。
  • 异常处理:使用try...except...finally结构确保资源正确释放,并对异常进行处理。

通过这些示例和扩展,可以更深入地理解如何将文件数据导入到数据库,并学习到一些提高数据库操作安全性和效率的方法。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值