python在内存管理上有一个特点,分配出去的内存,及时对象的引用计数为0,也不会立即释放内存,而是作为内存缓存,等待下次分配,到某个时机才会回收内存,因此在使用sqlalchemy的时候,如果查询结果包含大量结果(大于1000个),需要遍历每个ORM的时候,调用query().all()方法会导致内存激增(sqlalchemy会把所有对象放在内存中),下面是遍历290000+条记录的内存激增:
[I 160802 18:17:05 xxxx:134] c6833 Memory: 3.7% 662M/7870M [I 160802 18:18:53 xxxx:140] c6833 after xxxx [I 160802 18:18:53 xxxx:141] c6833 Memory: 29.7% 2716M/7870M
改用query().yield_per(1000)之后,内存分配就不会那么多了:
[I 160802 18:12:15 xxxx:134] b1213 Memory: 2.9% 600M/7870M [I 160802 18:13:39 xxxx:140] b1213 after xxxx [I 160802 18:13:39 xxxx:141] b1213 Memory: 9.4% 1112M/7870M
官方手册对于yield_per的描述如下:
sqlalchemy官方手册写道
The purpose of this method is when fetching very large result sets (> 10K rows), to batch results in sub-collections and yield them out partially, so that the Python interpreter doesn’t need to declare very large areas of memory which is both time consuming and leads to excessive memory use. The performance from fetching hundreds of thousands of rows can often double when a suitable yield-per setting (e.g. approximately 1000) is used, even with DBAPIs that buffer rows (which are most).
sqlalchemy官方手册:http://docs.sqlalchemy.org/en/latest/orm/query.html
相关推荐
资源分类:Python库 所属语言:Python 资源全名:SQLAlchemy-ORM-tree-0.0.7.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
SQLAlchemy是Python编程语言下的一款开源软件。提供了SQL工具包及对象关系映射(ORM)工具,使用MIT许可证...SQLAlchemy首次发行于2006年2月,并迅速地在Python社区中最广泛使用的ORM工具之一,不亚于Django的ORM框架。
在使用 SQLAlchemy 时,那些看似很小的选择可能对这种对象关系映射工具包的性能产生重要影响。 对象关系映射Object-relational mapping(ORM)使应用程序开发人员的工作更轻松,在很大程度是因为它允许你使用你可能...
SQLAlchemy是一个数据库的...通过把表映射成类,把行作为实例对象,把字段作为类属性,ORM在执行对象操作的时候最终还是会把对应的操作转化为数据库原生语句。 其主要优点有: 易用 性能损耗小 设计灵活 可移植性强
学习使用SQLAlchemy框架,在ORM模式下实现Python与MySQL的连接、结构设计和增删查改
SQLAlchemy访问清单 虚拟环境 要初始化虚拟环境,请在项目根目录中运行以下命令,需要pipenv $ pipenv shell 测试ACL 测试的最简单方法是创建简单的脚本 from sqlalchemy import create_engine from sqlalchemy . ...
sqlalchemy 文档 供大家参考
本文主要介绍Python使用ORM框架SQLAlchemy操作Oracle数据库。 1. 安装Oracle Instant Client 2. 安装依赖库 使用以下命令来安装SQLAlchemy和cx_Oracle库: pip install SQLAlchemy pip install cx_Oracle 3.创建...
sqlakeyset该库实现了SQLAlchemy的基于键集分页(包括ORM和核心)
该项目的最终目标是在SQLalchemy核心之上构建django ORM,以便现有的django应用程序可以轻松地从django的当前ORM迁移到基于SQLalchemy的django ORM,而几乎不需要更改或更改尽可能少。 动机: : django-sqlalchemy...
Thing 是无网不剩(lzyy)用 SQLAlchemy 核心开发的一款 Rails ActiveRecord 风格 ORM。 SQLAlchemy 是 Python 界著名 ORM 框架,地位与 Java 界 Hibernate 类似。而 Thing 不是对 SQLAlchemy 的包装,只使用了其...
提供了SQL工具包及对象关系映射(ORM)工具。SQLAlchemy“采用简单的Python语言,为高效和高性能的数据库访问设计,实现了完整的企业级持久模型”。SQLAlchemy的理念是,SQL数据库的量级和性能重要于对象集合;而...
SQLAlchemy 是Python 社区最知名的 ORM 工具之一,为高效和高性能的数据库访问设计,实现了完整的企业级持久模型。
The ORM is in contrast to the SQLAlchemy Expression Language, upon which the ORM is constructed. Whereas the SQL Expression Language, introduced in SQL Expression Language Tutorial, presents a system ...
Python SQLAlchemy Core / SQLAlchemy ORM查询,Pandas和Matplotlib。 目录 介绍 夏威夷火奴鲁鲁气候分析:度假时间!为了帮助我进行旅行计划,我需要对这一区域进行一些气候分析。好吧,让我们设定一些目标, 目标...
gino:GINO不是ORM-SQLAlchemy核心上的Python异步ORM
sqlalchemy-教程SQL Alchemy ORM 教程的示例代码和幻灯片
SQLAlchemy 1.1 Documentation