欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python:批量从excel文件导入数据到SQLite

程序员文章站 2022-06-11 10:44:12
...

尽管SQLite应用广泛,但是网上可参考资料却不太多,现有的菜鸟教程(www.runoob.com)、SQLite官网Python的SQLite子站信息略嫌粗糙而且比较基础,故此分享一些跳出坑的经验供大家参考。

以下代码基于Python 3.7.1
使用了openpyxl模块、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
lawnum=datainlist.max_row-1 #总行数减1去掉了表头占据的一行即为中数据总行数
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()