【python】SQLite学习笔记06:从excel文件批量导入数据到SQLite数据库

尽管SQLite应用广泛,但是网上可参考资料却不太多,现有的菜鸟教程(www.runoob.com)、SQLite官网和Python的SQLite子站信息略嫌粗糙而且比较基础,故此分享一些跳出坑的经验供大家参考。看代码吧,重点代码我会敲黑板的。有何疑问请在评论区留下你的问题,我会尽快回复。

待导入的excel文件内容截图:
【python】SQLite学习笔记06:从excel文件批量导入数据到SQLite数据库_第1张图片
以下代码基于Python 3.7.1,需要说明的是,代码省略了数据库及表的创建部分,因为这块知识比较基础。
我使用了openpyxl模块(操作excel文件实在好用!)、sqlite3模块,应用了迭代器来逐行读取excel数据,可以较好地控制内存开销(对较大的excel文件才有实际价值)。

import sqlite3
import openpyxl
lists=sqlite3.connect('onlyu.db') 
c=lists.cursor()
listinsheet=openpyxl.load_workbook(r'C:\Users\VC\OneDrive\python2019\database\edit_42479_2019-01-14T152133.xlsx')
datainlist=listinsheet.active #获取excel文件当前表格
data_truck='''INSERT INTO mylist(list_id,list_node_id,doc_signature,doc_title,doc_category,doc_definition,doc_heading,doc_index,doc_col1,doc_col2,doc_col3,doc_col4,doc_col5,
doc_col6,doc_col7,doc_col8,doc_code) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)'''
for row in datainlist.iter_rows(min_row=2,max_col=17,max_row=datainlist.max_row): 
#使excel各行数据成为迭代器
    cargo=[cell.value for cell in row] #敲黑板!!使每行中单元格成为迭代器
    c.execute(data_truck,cargo) #敲黑板!写入一行数据到数据库中表mylist
lists.commit()
lists.close()

你可能感兴趣的:(SQLite,python)