iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >关于批量插入:Python sqlite
  • 561
分享到

关于批量插入:Python sqlite

批量Pythonsqlite 2023-01-31 07:01:50 561人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

   个人遇到了一个需要互操作 Access 与 sqlite 的项目,其中涉及了诸多 join 和 relation。最重要的是数据的互相流动,这个项目使用了 pypyodbc 与 sqlobject,不免涉及了批量操作的问题。我将详细

   个人遇到了一个需要互操作 Access 与 sqlite 的项目,其中涉及了诸多 join 和 relation。最重要的是数据的互相流动,这个项目使用了 pypyodbc 与 sqlobject,不免涉及了批量操作的问题。我将详细记录 sqlite 中的批量操作问题。


  • pypyodbc


   作为数据源的 access 我将不会在本文中讨论


  • SQLObject



   SQLObject 的操作速度一直是为人所诟病的,在官方的 FAQ 中对于其不支持 Lazy Insert 的原因,其解释道:

The reason for this limit is that each object needs a database ID,
不支持(lazy insert)的原因是每个对象都需要一个数据库标识(db id)
and in many databases you cannot attain an ID until you create a row.
而在很多数据库上只有插入一行后才能得到它(ID)


   它既然这么说也无可厚非,纯粹的架构问题。

   在随后的一个问题:How to do mass-insertion? 中它又提出使用 SQLBuilder(官方:lower but much faster api) 来进行批量操作,例如用 sqlbuilder.Insert 和 sqlrepr() 生成 query 后,在 connection.query() 中执行,类似的 queryAll() 调用相同的数据库方法,只是结果返回 fetchALL(),但是最终结果让我不能仍受,插入100行几乎就像无响应一样,代码如下:

from sqlobject.sqlbuilder import *
import sqlobject
sqlite_file = os.path.abspath('D:/db.sqlite')
conn = sqlobject.connectionForURI('sqlite:/'+sqlite_file)
_values = {}
for row in datas:
    # 在这里我设置了 _values 的内容,like:
    # _values[column] = data
    insert = Insert('records', values=_values)
    a_query = conn.sqlrepr(insert)
    conn.query(a_query)


   当时无论怎么看都是每次 query 都是 autocommit 的,果不其然非常之慢,执行了将近十秒,这开始让我怀疑可能是我误解的文档的意图,我在邮件列表上提问,目前还没有收到答复。


  • sqlite3


   

   随后我尝试了内置的 sqlite3,由于直接执行 sql 和手动提交,它的速度很少有人抱怨,我没有花太多力气就在官方文档中找到了批量操作的方法:

   

c = conn.cursor()
purchases = [('2006-03-28', 'BUY', 'IBM', 1000, 45.00),
             ('2006-04-05', 'BUY', 'MSFT', 1000, 72.00),
             ('2006-04-06', 'SELL', 'IBM', 500, 53.00),
            ]
c.executemany('INSERT INTO stocks VALUES (?,?,?,?,?)', purchases)


   插入947行用了2秒,虽然需要手动编写 insert SQL,但是这点代价可以接受

--结束END--

本文标题: 关于批量插入:Python sqlite

本文链接: https://www.lsjlt.com/news/191096.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 关于批量插入:Python sqlite
       个人遇到了一个需要互操作 Access 与 sqlite 的项目,其中涉及了诸多 join 和 relation。最重要的是数据的互相流动,这个项目使用了 pypyodbc 与 sqlobject,不免涉及了批量操作的问题。我将详细...
    99+
    2023-01-31
    批量 Python sqlite
  • sqlite如何批量插入数据
    在SQLite中,可以使用INSERT INTO语句以及UNION ALL语法来批量插入数据。以下是一个示例代码: INSE...
    99+
    2024-04-10
    sqlite
  • python MySQL 批量插入
    # coding:utf-8 import pymysql # 打开数据库连接 db = pymysql.connect(host='localhost', port=3306, user='u...
    99+
    2023-01-31
    批量 python MySQL
  • sqlite批量插入数据报错怎么解决
    在SQLite中进行批量插入数据时,可能会遇到以下问题导致报错: 数据格式不正确:确保插入的数据格式与表定义的格式一致,例如日期...
    99+
    2024-04-10
    sqlite
  • 如何在SQLite中执行批量插入操作
    在SQLite中执行批量插入操作可以通过使用事务来提高插入操作的性能和效率。以下是在SQLite中执行批量插入操作的一般步骤: ...
    99+
    2024-04-09
    SQLite
  • Python使用SQLite插入大量数据
    前言 使用Python爬虫代理IP时,最先使用了sqlite作为存储ip数据库,sqlite简单、灵活、轻量、开源,和文件系统一样。而当大量插入爬取的数据时,出现了严重的耗时,查看一起资料后,发现:sqlite在每条insert都...
    99+
    2023-01-31
    数据 Python SQLite
  • python操作mysql批量插入
    一、大量信息插入 通过python向mysql插入大量数据时,可以有两种方法: for + cursor.execute(sql),最后集中提交(commit()) cursor.executemany(sql,list) 两种方法效率上和...
    99+
    2023-08-31
    mysql 数据库 python
  • python批量插入数据到mysql
    使用python批量插入数据到mysql的三种方法 自动化单条insert # -*- coding:utf-8 -*-import timefrom pymysql import *# 装饰器,计算插入50000条数据需要的时间def t...
    99+
    2023-09-06
    mysql 数据库 sql
  • Oracle中多表关联批量插入批量更新与批量删除操作
    该文章会分为三部分 1.多表关联批量插入 2.多表关联批量更新 3.多表关联批量删除 首先要明白一点,为什么会有批量这一个概念,无非就是数据太多了,在java端把数据查出来然后在按照100-300的批...
    99+
    2024-04-02
  • 关于MySQL 大批量插入时如何过滤掉重复数据
    目录一、发现问题二、删除全部重复数据,一条不留三、删除表中删除重复数据,仅保留一条四、开始删除重复数据,仅留一条前言: 加班原因是上线,解决线上数据库存在重复数据的问题,发现了程序的...
    99+
    2024-04-02
  • python在sqlite中插入数据
    python通过引入sqlite的包,就能够直接操作sqlite数据库 import sqlite3 import math cx=sqlite3.connect("mydatabase.sqlite") cu=cx.curso...
    99+
    2023-01-31
    数据 python sqlite
  • SQL批量插入数据
    MS SQL Server数据库批量插入数据的sql语句总结:第一种:insert into tb_NameList(Name,InsertDate,UpdateDate)values('aa',GETDA...
    99+
    2024-04-02
  • java 批量插入数据
    批量插入数据,常见的使用mybatis foreach 插入的方式,原始的方式和批处理 1,常见的mybatis foreach xml insert into CODEINFO (CODE_TYPE, CODE, MEAN, STAT...
    99+
    2023-09-03
    mybatis mysql 批量插入
  • Mybatis批量插入、修改
            在 MyBatis 中, 标签用于遍历集合类型的条件,并且可以将多个参数值拼接成为 SQL 语句的一个部分,通常被用于批量插入或更新等操作。  属性及介绍          属性介绍collection集合名称item字符别...
    99+
    2023-09-09
    java spring boot mybatis mysql
  • python向mySQL批量插入数据的方
    通过调用mySQLdb python库中的 cursor.executemany()函数完成批量处理。 今天用这个函数完成了批量插入 例程: def test_insertDB():     conn = database.Connect...
    99+
    2023-01-31
    批量 数据 python
  • Mybatis-plus---的批量插入
    批量插入 一、继承IService(伪批量) 二、insertBatchSomeColumn Mybatis-plus很强,为我们诞生了极简CURD操作,但对于数据批量操作,显然默认提供的insert方法是不够看的了,于是它和它来了!...
    99+
    2023-08-31
    mybatis java spring
  • MongoDB:批量插入(Bulk.insert)与多个插入(insert([...]))
    在MongoDB中,有两种方法可以用来插入多个文档:批量插入和多个插入。批量插入使用`Bulk.insert`方法,它可以一次插入多...
    99+
    2023-09-26
    MongoDB
  • 基于Mybatis-Plus扩展批量插入或更新InsertOrUpdateBath
    前言: mybatis-plus 是一款很好用的crud基础框架,但是我在api中没有找到插入或者更新,那么我想着基于mybatis-plus 自定义一个方法出来用,因为插入或者更新在字段数量多的时候写xml是非常麻烦的事情。 传统写法: ...
    99+
    2023-08-31
    mybatis java mysql
  • mysql批量插入insert语句
    在MySQL中批量插入数据有几种方法,下面我将介绍其中两种常用的方法: 方法一:使用INSERT INTO … VALUES语句的多值插入 这是一种简单的方式,可以一次性插入多个值。以下是一个示例: ...
    99+
    2023-10-21
    mysql 数据库
  • 大批量数据分批批量插入或更新(Mybatis+MySQL)
    大批量数据分批批量插入或更新 在MySQL数据库的前提下,插入或更新大批量数据。首先批量插入需要考虑到以下几个因素: 数据库一次可以承受多大或者多少条数据的插入批量插入是否会占用Mysql资源太久,影响系统整体使用性能代码中的集合是否会造成...
    99+
    2023-08-30
    mybatis mysql 数据库 java spring boot
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作