我想使用 Python 版本的 App Engine,但不是专门为 Google Data Store 编写代码,而是想使用可以附加到 Big Table 的通用 Python ORM 创建我的模型,或者,如果我更喜欢在以后的某个时间使用常规数据库。是否有任何 Python ORM(例如 SQLAlchemy)允许这样做?
2 回答
从技术上讲,这不会被称为 ORM(对象关系映射器)而是 DAL(数据库抽象层)。ORM 部分对 AppEngine 来说并不是很有趣,因为 API 已经处理了对象映射并进行了一些简单的关系映射(请参阅 RelationProperty)。
还要意识到 DAL 永远不会让您在 AppEngine 的数据存储和像 mysql 这样的“普通” sql 数据库之间切换,因为它们的工作方式非常不同。它可以让你在不同的键值存储之间切换,比如 reddis、mongo 或 tokyo cabinet。但由于它们都有非常不同的特性,所以在使用它们之前我真的会三思而后行。
最后,DAL 传统上位于 DB 接口之上,但使用 AppEngine 的 api,您可以实现自己的“存根”,基本上可以让您在其 api 上使用其他存储后端。Mongo 的人为 MongoDB 写了一篇,非常好。dev_appserver 带有一个基于文件系统的服务器。
现在回答:是的,有一个!它是web.py的一部分。由于上述原因,我还没有真正尝试过,所以我不能说它是否好。
PS。我知道 Ruby 也有一个不错的 DAL 项目用于键值存储,但我现在找不到它......也许在某个时候移植到 Python 很不错。
现在他们这样做了,因为谷歌推出了 Cloud SQL