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

  • 一、读数据
  • 二、连接数据库
  • 1.在数据库中建立一个新的表
  • 2.将数据写入到数据库中
  • 3.检查数据是否正确


一、读数据

我使用的是第三方包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

我的文件的结构如下所示:

go java python 大数据 python操作大数据_python

文件有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))

go java python 大数据 python操作大数据_go java python 大数据_02

二、连接数据库

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语句在数据库中执行,看总的行数是否与在处理数据时的行数相同。

我自己去检查我的数据是否正确,在数据库中用了一下的语句:

go java python 大数据 python操作大数据_go java python 大数据_03


可以看到其中caseid列的数据的行数为:480908,与前面进行处理完毕的数据的行数相同,至此,已经将数据全部写入数据库中。

go java python 大数据 python操作大数据_数据_04