Python n列表对象。因此,对内存有好处,因为结果列表对象的大小将根据结果的数量而有所不同。光标对象将始终为静态大小

Python n列表对象。因此,对内存有好处,因为结果列表对象的大小将根据结果的数量而有所不同。光标对象将始终为静态大小,python,sqlite,Python,Sqlite,有没有更好的方法可以让我这样做,比如简单地握住 每个区块的start_rowid和stop_rowid变量,然后 计算下一个块大小并执行SELECT语句 那些索引 执行此方法将花费更多时间结束语句,然后准备下一个语句,而不是执行单个选择,然后使用fetchmany()一次检索数据块 至于我的示例的其余部分,我决定使用一种多处理方法(由Ente建议)来充分利用资源,并将使用一个SELECTwithfetchone()添加到队列中。我将让多个工作进程从队列中提取并发送API调用,然后将结果添加到D

有没有更好的方法可以让我这样做,比如简单地握住 每个区块的start_rowid和stop_rowid变量,然后 计算下一个块大小并执行SELECT语句 那些索引

执行此方法将花费更多时间结束语句,然后准备下一个语句,而不是执行单个
选择
,然后使用
fetchmany()
一次检索数据块



至于我的示例的其余部分,我决定使用一种多处理方法(由Ente建议)来充分利用资源,并将使用一个
SELECT
with
fetchone()
添加到队列中。我将让多个工作进程从队列中提取并发送API调用,然后将结果添加到DoneQueue。我将通过DoneQueue进行最后的进程分块,并使用
UPDATE
执行
executemany()

使用单个UPDATE语句执行。使用用户定义的函数获取新值是一种值得研究的方法。为了获取新值或知道将其放置在何处,我必须从同一行获取id值。你是说在循环中有一个select语句,然后在循环中有一个update语句,每行一次?我刚刚研究了create_函数方法,它似乎可以工作,但我想知道它是否缺乏所需的容错能力?如果它在完成之前被中断,那么到目前为止完成的值会被提交到数据库还是丢失?想想
UPDATE foo SET col2=compute\u value(col1)
。你说的打断是什么意思?如果有什么东西在更新过程中终止了进程,它会被回滚。这就是问题所在。它需要容忍被打断而不后退,这样我才能再次拿起它。可能需要几天的时间才能完全完成,因此计划外中断的可能性非常高。时间因素是因为这是一个API调用,所以API有一定的时间返回所需的值。问题仍然在于SQL语句本身的内存,fetchone()或fetchmany()是否不像常规SQL数据库那样工作,结果将加载到内存中,然后一次提供一个/多个?好的,我想我现在明白你的问题了,是:当调用
execute
时,python sqlite游标是否提取内存中的所有行?是的,当sqlite3的
SELECT*
语句调用
fetchmany()
时,是否所有行都因为
SELECT
语句而加载到内存中,或者pythonsqlite实现是否发生了与另一台SQL服务器(PostgreSQL/MySQL)不同的特殊情况?
table:
  columns: id, value1, updated_value