[转载] Python3 使用 SQLite3 数据库的操作笔记:批量插入_python sqlite3 批量插入-程序员宅基地

参考链接: 使用Python将变量插入数据库表

目的 

要把很多个文本文件的内容(固定格式),批量导入到数据库,方便以后查询。 

前言 

刚接触 Python,把自己的心得分享给大家 

 

 电脑系统:Win7 X64 代码编辑器:Visual Studio Code,扩展中安装 Python Python版本:3.8.4,当中已经集成 SQLite3,不用另外安装 

 

测试文本文件:a1.txt,a2.txt 格式如下: 

a1.txt

A1001,zhangyi

A1002,zhanger

A1003,zhangsan

 

a2.txt

A2001,liliyi

A2002,lilier

A2003,lilisan

 

思路 

循环文件夹内所有文本文件文本文件内容转换为数据库需要的格式,且放到列表变量中把列表变量数据插入到数据库 

编程 

经多次测试发现,下面这种方式处理效率最高: 

import sqlite3, glob, time

 

Dir0=input('请输入文件所在的文件夹(格式 c: 或 c:/abc):')

# 查找输入的文件夹下所有 .txt 文件,不包含子文件夹

Dir1=glob.glob(Dir0+r'/*.txt') 

 

Int0=len(Dir1)  # 总文件数

if Int0 == 0:

    print(Dir0,'目录下没有所需文件')

 

# 数据库连接

conn = sqlite3.connect('z:\\1.db')

# 创建一个表 p (判断表是否存在,不存在就创建一个)

conn.execute('CREATE TABLE IF NOT EXISTS p (ID CHAR(50),Name CHAR(50))')

 

Int1=0  # 打开第几个文件

 

for Row0 in Dir1:

    

    # 计时开始,用于查看处理文件所需时间

    start = time.perf_counter()

 

    # 列表变量要先设定

    List0=[]

 

    Int2=0  # 文本总行数

    Int1 += 1

    

    print('总文件数:',Int0 ,'  正在打开第',Int1 ,'个文件。  文件名:',Row0)

    File0 = open(Row0) # 打开文本文件

 

    for Row1 in File0.readlines() :

 

        # 根据文本格式,查找 ',' 逗号所在字符串位置

        Int10=Row1.find(',')

        # 取逗号左面字符串

        Str1=Row1[:Int10]

        # 取逗号右面字符串,文本文件内每行字符串后有一个换行符,所以要 -1

        Str2=Row1[Int10+1:len(Row1)-1]

 

        Str0 = Str1,Str2

        List0.append(Str0) # 列表变量添加新数据

 

        Int2 +=1

 

    File0.close() # 关闭文本文件

    

    print ('处理文本用时:', time.perf_counter() - start)

    print ('文本行数 =',Int2)

 

    # 往表中插入数据。conn.executemany 可以一次插入多行数据。

    # conn.execute 每次只能插入一行数据,且要放入循环内,效率低得多

    conn.executemany('INSERT INTO p (ID,Name) VALUES (?,?)',(List0))

 

    conn.commit()  #事物完结

    

    print ('插入数据用时:', time.perf_counter() - start)

 

    Rs1 = conn.execute("SELECT count(*) from p")

    print('表总行数 =',Rs1.fetchone()[0])

 

    print('')

 

Rs2 = conn.execute("SELECT ID,Name from p")

for Row2 in Rs2:

    print ("ID = ", Row2[0])

    print ("Name= ", Row2[1])

    

conn.close()

 

结果如下: 

请输入文件所在的文件夹(格式 c: 或 c:/abc):z:

总文件数: 2   正在打开第 1 个文件。  文件名: z:/a1.txt

处理文本用时: 0.005185218999999908

文本行数 = 3

插入数据用时: 0.014957353000000229

表总行数 = 3

 

总文件数: 2   正在打开第 2 个文件。  文件名: z:/a2.txt

处理文本用时: 0.0011917829999998908

文本行数 = 3

插入数据用时: 0.010902635999999966

表总行数 = 6

 

ID =  A1001

Name=  zhangyi

ID =  A1002

Name=  zhanger

ID =  A1003

Name=  zhangsan

ID =  A2001

Name=  liliyi

ID =  A2002

Name=  lilier

ID =  A2003

Name=  lilisa

 

结束 

实际使用中,插入100万条数据,运行效率还算满意 

请输入文件所在的文件夹(格式 c: 或 c:/abc):d:

总文件数: 2   正在打开第 1 个文件。  文件名: d:\1.txt

处理文本用时: 0.724840726

文本行数 = 559103

插入数据用时: 3.0582557649999984

表总行数 = 559103

 

总文件数: 2   正在打开第 2 个文件。  文件名: d:\2.txt

处理文本用时: 0.7421396850000015

文本行数 = 559103

插入数据用时: 3.5078366950000017

表总行数 = 1118206

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u013946150/article/details/112094757

智能推荐

区块链+保险的概述和发展现状_区块链保险概述-程序员宅基地

文章浏览阅读2.2k次。文章来源: http://www.blockchainbrother.com/在国外,区块链保险联盟B3i成立于2016年10月,联盟成员包含了美国再保险集团、Liberty Mutual保险公司、汉诺威保险公司、SCOR、杰勒拉利保险集团、瑞士苏黎世保险集团、瑞士再保险集团、慕尼黑保险集团、安联保险集团等等。这一平台将全球最大的保险集团连接到链上,力图使用已经成熟的区块链智能合约技术,提..._区块链保险概述

官方文档翻译-ESP32-Heap Memory Allocation_malloc_cap_dma-程序员宅基地

文章浏览阅读2.2k次。堆内存分配概述The ESP32 has multiple types of RAM. Internally, there’s IRAM, DRAM as well as RAM that can be used as both. It’s also possible to connect external SPI RAM to the ESP32 - external RAM can..._malloc_cap_dma

laravel配置memcache_laravel 框架memcache的配置-程序员宅基地

文章浏览阅读1.9k次。laravel配置memcache_laravel 框架memcache的配置

解决AttributeError: module 'numpy' has no attribute 'float128'错误-程序员宅基地

文章浏览阅读1.3w次,点赞5次,收藏5次。使用conda安装pyopengl-accelerate后,运行时出现AttributeError: module 'numpy' has no attribute 'float128'错误,原因是Windows上微软编译器不支持numpy.float128数据类型,解决办法是使用pip安装第三方修改的whl安装包。具体步骤:首先去https://www.lfd.uci.ed..._module 'numpy' has no attribute 'float128

【机器人】简记一下SimScape和SolidWorks导出三维文件操作_simscape app 导出 模型-程序员宅基地

文章浏览阅读2.4k次。1.前言今天帮一位同学将一个.STEP文件导入SimScape中进行仿真,因为自己很久没有导入新的模型了,一直在用旧模型,所以对导入文件的操作有点生疏了,在查了一些资料和碰壁之后想起来了,特此记录一下。2.问题1:SW模板文件无效在用SW打开.STEP装配体文件时,提示:solidworks the default templates are not valid,即模板无效,如果点击continue,则显示为空白,此时需要对template文件路径重新设置一下即可3.SW安装SimSca_simscape app 导出 模型

softmax回归模型对Fashion-MNIST训练集中的图像数据进行分类_通过fashion mnist 数据集 训练一个softmax分类器,实现分类功能。fashion -程序员宅基地

文章浏览阅读603次。softmax函数的引入在多分类神经网络中直接使用输出层的输出有两个问题:1. 一方面,由于输出层的输出值的范围不确定,我们难以直观上判断这些值的意义。例如,刚才举的例子中的输出值10表示“很置信”图像类别为猫,因为该输出值是其他两类的输出值的100倍。但如果o1=o3=103o_1=o_3=10^3o1​=o3​=103,那么输出值10却又表示图像类别为猫的概率很低。2. 另一方面,由于真..._通过fashion mnist 数据集 训练一个softmax分类器,实现分类功能。fashion mnist

随便推点

网页文件是用html语言创建的文本文件,把txt文件变成html网页文件-程序员宅基地

文章浏览阅读1.6k次。如果您看过《HTML是什么?——零基础自学网页制作》这篇教程,请按照其中说明创建一个txt文件。具体过程如下:step1:在您方便的磁盘中建立一个文件夹,命名为"零基础自学网页制作"。例如我在D盘中建立了"零基础自学网页制作"文件夹。step2:在文件夹中创建"HTML框架.txt"文件。鼠标移动到空白处点击右键选择"文本文档"。命名为"html框架",如下图所示。如果您的电脑没有显示".txt"..._网页用txt修改后如何再变成网页文件

iTest--记录android app消耗的cpu/内存/流量 /电量_itest app性能监控cpu怎么看-程序员宅基地

文章浏览阅读8.1k次,点赞2次,收藏13次。iTest-是gt外的另一款记录android app消耗的cpu/内存/流量 /电量的工具,1.下载并安装到手机2.打开itest并注册(有些功能需要注册才能使用),点击监控应用的增加按钮,选择要测试的应用。点击监控指标选择要监控的指标3.点击启动监控,然后操作该应用即可。4.测试完成后,回到itest界面,点击停止监控,自动保存监控的数据。5.点击主_itest app性能监控cpu怎么看

Java.util.List_小白学JAVA_java.until.list是-程序员宅基地

文章浏览阅读287次。List<E> :有序且允许重复的容器;//我一般直接把他称为线性表熟悉的实现类有AbstractList<E>//随机访问数据结构的父类(如数组,ArrayList就是它的实现类);AbstractSequentialList<E> extends AbstractList<E>//连续访问数据结构的父类(如链表,LinkedList就是它的实..._java.until.list是

推荐5个堪称神器的学习网站,在家你值得拥有-程序员宅基地

文章浏览阅读2.4k次,点赞2次,收藏6次。最近偶尔有人问我程序员网上有什么好的学习网站,说实话,现在网上资源比较多,也比较杂乱,我这里给大家推荐几个,希望大家喜欢,如果觉得不错的话,文末请点赞顺手加个关注。1、哔哩哔哩登录网址:https://www.bilibili.com/bilibili 是国内知名的视频弹幕网站,通过动漫打出了名声,最近几年发展势头迅猛,里面有不少有创意的 Up 主,不乏一些有趣的程序员,也有很多免费的视频学...

G - Most Common Suffix Gym - 101502G 按边建边+思维_gym 101502g-程序员宅基地

文章浏览阅读506次。G. Most Common Suffixtime limit per test1.0 smemory limit per test512 MBinputstandard inputoutputstandard outputYou are given n strings, and q queries. For each query i, your task is..._gym 101502g

suse下设置IP的3种方法_suse配置ip地址-程序员宅基地

文章浏览阅读1.6w次,点赞3次,收藏7次。第一种SUSE Linux IP设置方法ifconfig eth0 192.168.1.22 netmask 255.255.255.0 uproute add default gw 192.168.1.2释义:#IP配置,包括子网掩码,看情况修改eth0和192.168.1.22 #网关修改 ,看情况修改192.168.1.2 第二种SUSE Linux IP设置方法在suse操_suse配置ip地址

推荐文章

热门文章

相关标签