任何Python ORM(SQLAlchemy?)在Google App Engine上可用吗?
我想使用Python版本的App Engine,但我不想专门为Google数据存储写代码。我希望能用一个通用的Python对象关系映射(ORM)来创建我的模型,这样将来如果我想用Big Table,或者用普通数据库也可以。有没有像SQLAlchemy这样的Python ORM可以做到这一点?
2 个回答
2
现在他们这样做是因为谷歌推出了Cloud SQL。
7
从技术上讲,这个东西不应该叫做ORM(对象关系映射),而应该叫做DAL(数据库抽象层)。ORM的部分对AppEngine来说并不太重要,因为它的API已经处理了对象映射,并做了一些简单的关系映射(可以看看RelationProperty)。
另外要明白,DAL永远无法让你在AppEngine的数据库和“普通”的SQL数据库(比如mysql)之间切换,因为它们的工作方式非常不同。它可能让你在不同的键值存储之间切换,比如redis、mongo或tokyo cabinet。但由于它们的特性差异很大,我建议在使用之前好好考虑一下。
最后,传统上,DAL是建立在数据库接口之上的,但在AppEngine的API下,你可以实现自己的“存根”,这基本上让你可以在他们的API上使用其他存储后端。Mongo的团队写了一个连接器,可以用来连接MongoDB,非常不错。而且dev_appserver自带一个基于文件系统的连接器。
现在来回答问题:是的,确实有一个!它是web.py的一部分。我因为上面提到的原因还没真正尝试过,所以不能确定它好不好。
顺便说一下,我知道Ruby也有一个不错的DAL项目正在开发中,专门用于键值存储,但我现在找不到它……也许将来可以考虑移植到Python上。