- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在 python 中使用 psycopg2 模块从 postgres 数据库中读取数据,我需要对超过 100 万行的列中的所有行进行一些操作。
我想知道 cur.fetchall()
会失败还是导致我的服务器宕机? (因为我的 RAM 可能没有那么大,无法容纳所有数据)
q="SELECT names from myTable;"
cur.execute(q)
rows=cur.fetchall()
for row in rows:
doSomething(row)
更聪明的方法是什么?
最佳答案
Burhan 指出的解决方案通过仅获取单行来减少大型数据集的内存使用量:
row = cursor.fetchone()
但是,我注意到逐行获取行的速度明显变慢。我通过 Internet 连接访问外部数据库,这可能是一个原因。
事实证明,拥有服务器端游标和获取行束是最高效的解决方案。您可以更改 sql 语句(如 alecxe 答案),但也有使用 psycopg2 提供的功能的纯 python 方法:
cursor = conn.cursor('name_of_the_new_server_side_cursor')
cursor.execute(""" SELECT * FROM table LIMIT 1000000 """)
while True:
rows = cursor.fetchmany(5000)
if not rows:
break
for row in rows:
# do something with row
pass
您可以在 psycopg2 wiki 中找到有关服务器端游标的更多信息
关于python postgres 我可以 fetchall() 100 万行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17933344/
有人知道 1u 在这个函数中的作用吗?以下函数接受一个整数并打印出它的位。我试图弄清楚的线是 putchar 线。我看到它需要一个无符号整数作为参数,并在二进制数大小的循环中迭代 1 或 0,这恰好发
我有一个 MySQL 数据库,存储了一个长而详细的时间序列(即,每分钟采样多次的多年测量值)。当我将此数据提供给客户端进行显示时,我想对数据进行下采样,这样我就不会向图表发送大量数据。例如,如果客户端
我有一个记录文章浏览量的表格。它有以下列: id, article_id, day, month, year, views_count. 假设我想跟踪每篇文章的每日浏览量/每一天。如果我有 1,000
写一个很长(200多行)的测试方法是不是太糟糕了?或者我应该把它分解成更小的方法? 最佳答案 您不应该(总体上)创建任何 200 行长的方法。如果你能打破它,就去做。 你在 200 行中做什么?单元测
我正在使用 SQL Server 2008-R2,但我也对更通用的答案感兴趣...... 我有一个包含数亿行的表,每行都有一个“DateModified”字段 (datetime2(7)) 现在我经常
SwiftMailer 需要一个电子邮件地址数组,可能包括名称作为数组的值: $message->setTo([ 'person1@example.org', 'person2@example
这个问题已经有答案了: MySQL - how many rows can I insert in one single INSERT statement? (8 个回答) 已关闭 3 年前。 我需要
我需要一个只有 n 行的 mysql 表。是否可以?有 1 行表的解决方案,但无法找到 n 行的任何内容。 最佳答案 如果您确实想在 mysql 中执行此操作,则必须编写一个触发器,每当插入行时都会调
我的日志文件很长,是否可以要求 grep 只搜索前 10 行? 最佳答案 管道的魔力; head -10 log.txt | grep 关于bash - 我可以只 grep 文件的前 n 行吗?,我
曾几何时,我有一张这样的 table : CREATE TABLE `Events` ( `EvtId` INT UNSIGNED NOT NULL AUTO_INCREMENT, `Al
我最近发现 dask旨在成为易于使用的python并行处理模块的模块。对我来说最大的卖点是它适用于 pandas。 在其手册页上阅读了一下之后,我找不到一种方法来完成这个琐碎的可并行化任务: ts.a
我刚刚安装并设置了一个 Doxygen 实例,但开箱即用时,它只能在代码中找到 TODO 标记,当标记在如下块中时: /** * @todo Foo */ 它似乎没有找到: // TODO Foo
我想知道这里有什么最佳实践。我正在制作一个表单,该表单具有通过 form-group 类分组的控件。这具有水平分组的控件,例如一行中的标题、名字、姓氏,然后下一行可以有日、月、年输入。 为了在一行中实
我想执行一个 MySQL 查询: SELECT * FROM table_A JOIN table_B on table_A.id = table_B.foreign_key …但我想返回表_B 中表
行不通,而嵌套
我一般不会嵌套像这样: The following: one two 我将使用 像那样嵌套反而。但是今天我用了但似乎 Emacs 和 Google Chrome 都会考虑外部 一看
我有这个代码 my $tmp = $q->param('owner'); $tmp =~ s/\s*//g; # remove white space from string my @owners
我有这些 div,每个都有相同的类 .onediv 和不同的 ID div1、div2、div3 我想使用 jquery 来改变它们的 css di
我正在阅读此文档:http://software.intel.com/en-us/articles/interactive-ray-tracing 我偶然发现了这三行代码: The SIMD vers
我需要通过调用 API 端点和数据格式为 JSON 来消耗大量数据(比如超过 100000 行)并将它们显示在 react 页面中。我正在使用 React-Table 开发逻辑,但想听听专家的意见,以
我正在尝试添加一条 GeoJSON 线来显示 A 点和 B 点之间的汽车方向(就像在 mapbox-gl-js 的官方文档中那样(https://www.mapbox.com/mapbox-gl-js
我是一名优秀的程序员,十分优秀!