在Google App Engine上打开SQLite数据库

7

有没有办法在GAE上打开和读取SQLite数据库文件?

我目前正在将数据库作为管理员上传到Blobstore,并向用户客户端公开服务。但是我无法在GAE管理界面中读取它们。


看起来标准的Python库无法实现,但也许你可以找到纯Python的SQLite库。 - Dmytro Sadovnychyi
目前,GAE不支持Python扩展中的sqlite。您需要使用Cloud SQL代替sqlite,或者使用“GAE proper”中的托管VM。或者编写自己的仪表板来查看/管理那些存储在blobstore(或者更好的是Google Cloud Storage)中的sqlite数据库,因为GAE管理界面肯定永远不会支持sqlite。 - Alex Martelli
我在谈论我在应用程序中编写的管理界面...我不需要修改sqlite数据库,只需使用Python打开和读取。我不需要在GAE管理控制台接口中调整内容,只需将db作为块即可。但是在内存中,我们应该能够做任何事情...就像Dmitry所说的那样,一个纯Python的sqlite库应该可以胜任。因此,我们还应该能够在内存中编辑数据库,然后将内容保存到数据存储器 :-P Sqlite只是像JSON一样的另一种格式。 - Jonny
我认为Blobstore不支持您需要查询数据库的随机文件访问类型。也许您可以像这个答案中建议的那样将其读入内存数据库中。 - Daniel Roseman
我觉得我们谈论的不是同一件事。我已经将数据库加载到内存中了;我需要一个Python库来解析它。我找到了http://www.pydblite.net,但还无法让它正常工作。 - Jonny
2个回答

5

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

然而,这样做有以下缺点: 1. 这不是一个“真正的”目录,即它存储在内存中。如果数据库太大,就会出现问题。 2. 每个实例都有其自己的 db.sqlite3 文件副本。不利于扩展。

以下是 Django 的示例: 如何在 Google App Engine 中使用 SQLITE 作为本地 Django 开发环境?


3
简短回答,目前无法在标准的Google App Engine应用程序中使用SQLite数据库,因为它不受支持。但是,您可以尝试使用App Engine Flexible Environment来实现自己的配置,从而通过基础架构定制来利用自定义库。
如果您想尝试实验,请看这个样例Django 应用程序,旨在在App Engine Flexible Environment上使用其默认的SQLite数据库运行。但是,请确保阅读数据库通知,提供替代数据存储选项并解释SQLite数据不会在实例重新启动时保留。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接