在 Google App Engine 上打开 SQLite 数据库

Posted

技术标签:

【中文标题】在 Google App Engine 上打开 SQLite 数据库【英文标题】:Open SQLite database on Google App Engine 【发布时间】:2015-01-28 04:28:59 【问题描述】:

是否有在 GAE 上打开和读取 SQLite 数据库文件的方法?

我目前正在以管理员身份将 dbs 上传到 blobstore,并将它们公开提供给用户客户端。我只是无法在 GAE 管理界面中阅读它们。

【问题讨论】:

看起来标准python库不可能,但也许你可以找到纯python sqlite库。 sqlite 目前不在 GAE 支持的 Python 扩展中——您需要使用 Cloud SQL 代替 sqlite,或者使用托管 VM 代替“GAE 正确”。或者编写自己的仪表板来查看/管理存在于 blobstore 中的那些 sqlite 数据库(或者更确切地说,我希望在 Google Cloud Storage 中!)因为 GAE 管理界面肯定永远不会支持 sqlite。 我说的是我在我的应用程序上写的管理界面......我不需要修改sqlite db,只需使用Python打开和阅读。我不需要摆弄 GAE 管理控制台界面中的内容,我对 db 只是一个 blob 很好。在记忆中,虽然我们应该能够做任何事情......不知何故。就像 Dmitry 所说,一个纯 Python sqlite 库应该可以做到。就此而言,我们还应该能够编辑内存中的数据库,然后将内容保存到数据存储区:-P Sqlite 只是另一种格式,如 JSON。 我认为 blobstore 不支持查询数据库所需的那种随机文件访问。也许您可以按照in this answer 的建议将其读入内存数据库。 我认为我们谈论的不是同一件事。我已经将数据库加载到内存中;我需要一个 python 库来解析它。我找到了pydblite.net,但还不能让它工作。 【参考方案1】:

您可以在 Google App Engine 上使用 SQLITE。该问题与某些库的支持无关。它与只读文件系统有关。但是,有一个可写的 /tmp 目录。如果您的应用在启动时首先将 db.sqlite3 文件复制到 /tmp/db.sqlite3 并将此路径作为数据库路径引用,它将起作用。

但是,也有缺点。 1. 这不是一个“真正的”目录,即它存储在内存中。如果数据库太大,就会出现问题。 2. 每个实例都有自己的 db.sqlite3 文件副本。不能很好地扩展。

这是一个 Django 示例: Using SQLITE for local Django development for Google App Engine?

【讨论】:

【参考方案2】:

简短的回答,不,不能在标准的 Google App Engine 应用程序上使用 SQLite 数据库,因为它目前不受支持。但是,您可以尝试使用 App Engine Flexible Environment 实现您自己的配置,这允许通过基础架构自定义来利用自定义库。

如果您想进行试验,这里有一个示例 Django application,设计用于在 App Engine 柔性环境中使用其默认 SQLite 数据库运行。不过,请务必阅读提供替代数据存储选项的数据库通知,并说明 SQLite 数据不会在实例重新启动时保留。

【讨论】:

以上是关于在 Google App Engine 上打开 SQLite 数据库的主要内容,如果未能解决你的问题,请参考以下文章

将 Nuxt JS s-s-r 应用程序部署到 Google Cloud App Engine 标准

在 Google-App-Engine 中使用 HSQLDB

如何在 Google Cloud App Engine 上使用 PubSub 创建订阅者,该订阅者通过 Publisher 从 Google Cloud App Engine Flex 收听消息?

在 Google App Engine 上部署 create-react-app

在 Google App Engine 上运行 Alembic 迁移

为啥在 Google App Engine 上使用 Django?