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

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

作者:互联网

使用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,与前面进行处理完毕的数据的行数相同,至此,已经将数据全部写入数据库中。

在这里插入图片描述

标签:sheet,读取,Python,数据库,db,caseid,大容量,sql,main
来源: https://blog.csdn.net/weixin_44843395/article/details/121162287