在内存中用Python查询现有/下载的SQLite数据库,而无需先将其写入磁盘



我想用Python查询从远程服务器下载的SQLite数据库,但从未将其写入磁盘。

我看到您可以使用神奇的名称:memory:在内存中启动一个空白的SQLite数据库https://docs.python.org/3/library/sqlite3.html.我看到您可以从磁盘支持的SQLiteDB复制到内存中的数据库,比如使用iterdump。但是我想用包含数据库的bytes实例的内容填充:memory:数据库,而无需首先将这些bytes写入磁盘。

我的理由是:似乎没有必要把它全部存储在内存中,必须把它写到磁盘上,然后读回内存,所以这是一个通用的"保持步数下降";在我的过程中。

它不支持查询,但您可以使用https://github.com/uktrade/stream-sqlite访问下载/下载的SQLite文件的内容,而无需将其写入磁盘。

以自述文件为例:

from stream_sqlite import stream_sqlite
import httpx
def sqlite_bytes():
with httpx.stream('GET', 'http://www.parlgov.org/static/stable/2020/parlgov-stable.db') as r:
yield from r.iter_bytes(chunk_size=65_536)
for table_name, pragma_table_info, rows in stream_sqlite(sqlite_bytes(), max_buffer_size=1_048_576):
for row in rows:
print(row)

(完全披露:我曾大量参与流sqlite的开发(

最新更新