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

问题描述 投票:0回答:1

我想在 Python 中查询从远程服务器(例如通过 HTTP)下载的 SQLite 数据库,而无需将其写入磁盘。

我看到你可以使用魔法名称

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

我的理由:似乎没有必要将其全部保存在内存中,必须将其写入磁盘,然后将其读回内存,因此在我的过程中这是一个通用的“减少步骤数”。

python python-3.x sqlite
1个回答
0
投票

它不支持查询,但您可以使用 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)

(全面披露:我大量参与了stream-sqlite的开发)

© www.soinside.com 2019 - 2024. All rights reserved.