使用Python读取大容量的数据并存入数据库中

一、读数据

我使用的是第三方包openpyxl进行数据的读取,读取的文件是xlsx格式的,如下:

from openpyxl import workbook
main_book = openpyxl.load_workbook(r'D:\final.xlsx')
main_sheet = main_book.active
row = main_sheet.max_row # 查询文件有多少行
row  # 我的文件的行数为 480908

我的文件的结构如下所示:
在这里插入图片描述文件有4列,一共是480908行

one = []
three =[]
caseid = []
content = []
# 将四列数据分别存入四个list中
for i in range(1, row + 1): # 从第1行开始的
    one.append(main_sheet.cell(i, 1).value)
    three.append(main_sheet.cell(i, 2).value)
    caseid.append(main_sheet.cell(i, 3).value)
    content.append(main_sheet.cell(i, 4).value)

接下来是最关键的一步

# 最关键的一步,需要将要导入数据库的list组成一个元组,这样才能使用pymysql中的executemany快速导入数据库中
tuple_total = list(zip(one, three, caseid, content))

在这里插入图片描述

二、连接数据库

db = pymysql.connect(
        host='localhost', #要连接的主机地址,本人连接自己本地的数据库
        port=3306, # 端口号,一般为3306
        user='账户',
        passwd='密码',
        db ='kg', # 所使用的数据库名
        charset='utf8'
        )
cursor = db.cursor() # 创建游标
1.在数据库中建立一个新的表

代码如下(示例):

# 创建一个表
# 本人的表格是四列的,所以在数据库中建立四个表名
sql_create = "CREATE TABLE test(one VARCHAR(200),three VARCHAR(255),caseid VARCHAR(1000), content VARCHAR(3000))"
try: 
    cursor.execute(sql_create)
    db.commit()
except: # 对异常进行处理
    db.rollback()

你在自己的数据库中会发现有个test表的存在。

2.将数据写入到数据库中

此时,要用到上面所说的tuple_total数据了,其中代码如下:

# 注意,%s是没有任何''这个符号的
sql_insert = "insert into test(one,three,caseid,content) VALUES (%s,%s,%s,%s)"
try:
    cursor.executemany(sql_insert, tuple_total)
    db.commit()
except Exception as e:
    print('出错的原因为: %s出错:%s' % (sql_insert, e))

若是没有出错,就可以在数据库的test表去查看数据了

3.检查数据是否正确

可以使用sql语句在数据库中执行,看总的行数是否与在处理数据时的行数相同。
我自己去检查我的数据是否正确,在数据库中用了一下的语句:
在这里插入图片描述
可以看到其中caseid列的数据的行数为:480908,与前面进行处理完毕的数据的行数相同,至此,已经将数据全部写入数据库中。

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值