英国政府商业和贸易部的 GitHub 组织上的整洁开源项目:“用于 SQLite 读取和写入 S3 的 Python 虚拟文件系统”。
我通过在具有所有依赖项的 Python REPL 中运行它来尝试他们的使用示例
uv run --python 3.13 --with apsw --with sqlite-s3vfs --with boto3 python
它的作用正如广告中所宣传的那样。当我列出我的 S3 存储桶时,我发现它创建了两个文件 – 一个名为demo.sqlite/0000000000
,另一个名为demo.sqlite/0000000001
,这两个文件都是 4096 字节,因为每个文件都代表一个 SQLite 页面。
该实现只有200 行 Python 代码,在apsw.VFS之上实现了一个新的 SQLite 虚拟文件系统。
自述文件包含此警告:
不执行锁定,因此客户端代码必须确保写入不会与其他写入或读取重叠。如果同时发生多个写入,数据库可能会损坏并且数据丢失。
我想知道 11 月份添加到 S3的条件写入功能是否可以用来防止这种情况发生。很棘手,因为涉及多个文件,但也许它(或像这样的技巧)可以用来在多个进程之间实现某种排他锁?
通过黑客新闻评论
标签: apsw 、 sqlite 、 python 、 uv 、 s3
原文: https://simonwillison.net/2025/Feb/7/sqlite-s3vfs/#atom-everything