我在 S3 存储桶中有一个 SQLite 数据库 (110kb)。每次运行 Python 应用程序时,我都想连接到该数据库。
一个选项是每次我运行 Python 应用程序并连接它时下载数据库。 但 我想知道是否存在通过内存连接到 SQLite 数据库的方法,使用 S3FileSystem
和 open
。
我在 Python 3.6 中使用 SQLite3 库。
原文由 Joaquin 发布,翻译遵循 CC BY-SA 4.0 许可协议
是的,EFS 可以:
https://www.lambrospetrou.com/articles/aws-lambda-and-sqlite-over-efs/
AWS 最近发布了 AWS Lambda 和 Amazon EFS 之间的集成。它支持 SQLite 所需的 NFSv4 锁升级/降级。这意味着 SQLite 引擎可以对存储在 EFS 文件系统上的文件进行读/写访问。
原文由 Alex B 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.4k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
2 回答2k 阅读✓ 已解决
2 回答1.9k 阅读✓ 已解决
2 回答528 阅读✓ 已解决
2 回答614 阅读✓ 已解决
2 回答662 阅读✓ 已解决
2 回答2.4k 阅读✓ 已解决
正如其他答案所表明的,您可能不想将 SQLite 用作云中的主数据库。
然而,作为一个有趣的副项目的一部分,我编写了一个 Amazon Athena 数据源连接器,它允许您 从 Athena 查询 S3 中的 SQLite 数据库。为此,我为 S3 编写了一个只读的 SQLite 接口。
SQLite 有一个 操作系统接口或 VFS 的概念。使用名为 APSW 的 Python SQLite 包装器,您可以为任意文件系统编写 VFS 实现。这就是我在我的项目中所做的,我在下面包含了实现。
为了使用它,您首先要注册 VFS,然后使用此实现作为驱动程序创建一个新的 SQLite 连接。
我应该注意到这根本没有优化,因此可能仍需要根据您的查询从 S3 读取完整的数据库。但在这个特定案例中听起来不像是个问题。
一旦有了游标,就可以像这样执行标准的 SQL 语句:
_VFS 实施_(需要 APSW 库和 boto3 用于 S3 连接)