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