pyDAL一个python的ORM(终) pyDAL的一些性能优化

这篇具有很好参考价值的文章主要介绍了pyDAL一个python的ORM(终) pyDAL的一些性能优化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、大批量插入数据

对于 大量数据插入时,虽然pyDAL也手册中有个方法:bulk_insert(),但是手册也说了,虽然方法上是一次可以多条数据,如果后端数据库是关系型数据库,他转换为SQL时它是一条一条的插入的,只有在NoSQL数据库时能提速bulk_insert()的用法如下,感兴趣的看看:

db.person.bulk_insert([{'name':'Alex','age':'11'}, 
                       {'name': 'John','age':'22'}, 
                       {'name': 'Tim','age':'33'}])

那后端是关系数据库时,有其他办法吗?答案是我们利用前面 我们提到:db.executesql()方法,直接用SQL,下面是例子,

1、目标:

MySQL数据库我们一次插入2000万的csv文件(普通PC是无法直接打开这么多行的数据文件的

2、解决思路:

(1)分块读取,分块插入,我们已知csv各列的名为:col1,col2,col3,我们每次读10万行,插入库10万行);

(2)使用db.executesql()方法,编写SQL批量插入语句

(3)特别注意:将你的数据库的单条语句的数据包大小适当调大。就mysql而言:

# 服务器接受的数据包的大小,在执行数据量较大的单条语句,如果超过了默认限制,就会报错,提示这个参数大小不足
max_allowed_packet=100M

3、MySQL批量插入数据语法:

INSERT INTO table_name (column1, column2,...) VALUES ("value1_1", "value1_2",...), ("value2_1", "value2_2", ...)......;

4、示例代码:

我们使用到了pandas库,pandas的read_csv()方法可以对非常方便的对大文件分块读取:

import pandas as pd
df_chunk = pd.read_csv('my.csv', chunksize=100000, iterator=True)
for chunk in df_chunk:
    insert_values = ''
    for row in range(0, chunk.shape[0]):
        insert_values += '("' + str(chunk.iloc[row,0]) + '","' + str(chunk.iloc[row,1]) + '","' + str(chunk.iloc[row,2]) + '"),'
    db.executesql('INSERT INTO my_table (col1,col2,col3) VALUES ' + insert_values[:- 1] + ';')
    db.commit()

二、对于结果集很大的查询做遍历循环iterselect

     如果我们要对一个查询结果集做遍历循环,且结果数据很大,例如:

for row in db(db.IMEI_table.IMEI.contains('666')).select():

.....

常规的上述写法,一定是先查询得到 完整的结果放在内存中,在做遍历循环,很吃内存,性能也低,针对这种情况,pyDAL提供了iterselect()方法,使用也很方便,如下:

for row in db(db.IMEI_table.IMEI.contains('666')).iterselect():

      ...

当数据量较大时,iterselect()不仅速度快,还节省内存:文章来源地址https://www.toymoban.com/news/detail-804809.html

到了这里,关于pyDAL一个python的ORM(终) pyDAL的一些性能优化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity 之 一些资源标准、性能优化点整合整理

    目录 Unity 之 一些资源标准、性能优化点整合整理 零、总起 一、模型 二、图片 三、音频资源 四、灯光 五、碰撞体 六、font 七、UGUI 八、移动端性能优化心得 优化思路: 1)和美术指定好相关资源的规范 2)代码框架,合理的管理资源、多线程使用、对象池的使用、算法的优

    2024年02月05日
    浏览(45)
  • 前端项目中CDN的一些问题【性能优化篇】

    CDN(Content Delivery NetWork, 内容分发网络 ),是指 利用最靠近每位用户的服务区 ,更快的将资源发送给用户。 提高用户的访问速度 减轻服务器压力 提高网站的稳定性和安全性 CDN一般用来托管Web资源(文本、图片和视频等),可供下载的资源,应用程序。使用CDN来加速这些

    2024年02月03日
    浏览(50)
  • openAi ChatGPT调用性能优化的一些小妙招

    参考的demo:GitHub - ddiu8081/chatgpt-demo: A demo repo based on OpenAI API. 扭曲调教: openai提供的chat接口(https://api.openai.com/v1/chat/completions)由于其模型很大(什么1750亿个参数啥的),单次http请求很难完成处理,一些常用的做法是采取流返回的方式,一个字一个字往外蹦,然后一点一点

    2023年04月16日
    浏览(47)
  • 用webpack做一些前端打包时的性能优化

    一.webpack 的五个核心概念 1.Entry:入口指示,webpack以哪个文件为入口起点开始打包,分析构建内部依赖图 2.output:输出指示,webpack打包后的资源bundles输出到哪里去,以及如何命名 3.loader :loader让webpack能够去处翻译理那些非js文件(img css…) 4.Plugins :Plugins插件可以用于执行范围

    2024年02月12日
    浏览(50)
  • webWorker解决单线程中的一些小问题和性能优化

    js是单线程这是大家都知道,为了防止多个线程同时操作DOM,这个导致一个复杂的同步问题。比如,假定JavaScript同时有两个线程,一个线程在某个DOM节点上添加内容,另一个线程删除了这个节点,这时浏览器应该以哪个线程为准。 web worker是 HTML5 标准的一部分,这一规范定义

    2024年02月21日
    浏览(40)
  • 一个Entity Framework Core的性能优化案例

    本文提供一个EF Core的优化案例,主要介绍一些EF Core常用的优化方法,以及在优化过程中,出现性能反复的时候的解决方法,并澄清一些对优化概念的误解,例如AsNoTracking并不包治百病。 本文使用的是Dotnet 6.0和EF Core 7.0。 本文主要使用一个图书和作者的案例,用于介绍优化过

    2024年02月08日
    浏览(47)
  • web性能优化基础了解

    什么是web性能优化 Web性能网站或应用程序的客观度量和可感知的用户体验。性能优化是指通过各种手段和技术,使前端页面在加载、渲染和交互等方面具有更高的性能,以提升用户体验和网站的整体性能。 为什么要做性能优化 性能优化是为了提高网站或应用的响应速度、页

    2024年02月04日
    浏览(40)
  • Unity 性能优化基础

    首先贴出官方文档。 DrawCall 即绘制调用命令,CPU在准备好渲染数据并设置渲染状态后,会通过Drawcall命令通知GPU进行渲染。 Canvas Canvas是一个 Native 层实现的Unity组件,被 Unity 渲染系统用于在游戏世界空间中渲染分层几何体(layered geometry)。 Canvas 负责把它们包含的Mesh合批,

    2024年02月06日
    浏览(33)
  • MySQL数据库的性能优化----(一步一个脚印)

    一、MySQL数据库的优化目标、基本原则: 1、优化目标: MySQL数据库是常见的两个瓶颈是CPU和I/O的瓶颈,无论是索引优化、还是表结构优化,参数优化,最后都可以归纳到这这两个分类中: (1)减少 I/O 次数: I/O是数据库最容易瓶颈的地方,大部分数据库操作中超过90%的时间

    2024年02月03日
    浏览(90)
  • 性能优化-OpenMP基础教程(一)

    本文主要介绍OpenMP并行编程技术,编程模型、指令和函数的介绍、以及OpenMP实战的几个例子。希望给OpenMP并行编程者提供指导。 🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:高性能(HPC)开发基础教程 🎀CSDN主页 发狂的小花 🌄人生秘诀:学习的本质就是极致

    2024年02月03日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包