问题 任何Python ORM(SQLAlchemy?)都可以与Google App Engine配合使用吗?


我想使用Python版本的App Engine,而不是专门为Google Data Store编写我的代码,我想用一个可以附加到Big Table的通用Python ORM创建我的模型,或者,如果我更喜欢,以后的常规数据库。是否有任何Python ORM如SQLAlchemy允许这样做?


12146
2017-08-20 19:39


起源



答案:


从技术上讲,这不会被称为ORM(对象关系映射器),而是DAL(数据库抽象层)。对于AppEngine,ORM部分并不是很有趣,因为API已经处理了对象映射并进行了一些简单的关系映射(请参阅RelationProperty)。

还要意识到DAL永远不会让你在AppEngine的数据存储区和像mysql这样的“普通”sql数据库之间切换,因为它们的工作方式非常不同。它可能允许您在不同的键值存储之间切换,如reddis,mongo或tokyo cabinet。但由于它们都具有非常不同的特性,所以在使用之前我会三思而后行。

最后,DAL传统上位于数据库接口之上,但是使用AppEngine的api,您可以实现自己的“存根”,基本上允许您在其api上使用其他存储后端。 Mongo的人写道  对于MongoDB非常好。 dev_appserver附带一个基于文件系统的。

现在回答:是的,有一个!这是其中的一部分 web.py。如果由于上述原因我没有真正尝试过,所以我不能说它是否好。

PS。我知道Ruby在keyvalue商店中也有一个很好的DAL项目,但我现在找不到它......也许在某些时候可以很好地移植到Python。


7
2017-08-21 00:55



web2py(web2py.com)和web.py(webpy.org)是2个不同的框架:) - Steven Kryskalla
我相信你在谈论Web2Py: web2py.com/book/default/chapter/06 并且还提到了 web2py.com 主页,在 会谈 部分。 - Cyril N.


答案:


从技术上讲,这不会被称为ORM(对象关系映射器),而是DAL(数据库抽象层)。对于AppEngine,ORM部分并不是很有趣,因为API已经处理了对象映射并进行了一些简单的关系映射(请参阅RelationProperty)。

还要意识到DAL永远不会让你在AppEngine的数据存储区和像mysql这样的“普通”sql数据库之间切换,因为它们的工作方式非常不同。它可能允许您在不同的键值存储之间切换,如reddis,mongo或tokyo cabinet。但由于它们都具有非常不同的特性,所以在使用之前我会三思而后行。

最后,DAL传统上位于数据库接口之上,但是使用AppEngine的api,您可以实现自己的“存根”,基本上允许您在其api上使用其他存储后端。 Mongo的人写道  对于MongoDB非常好。 dev_appserver附带一个基于文件系统的。

现在回答:是的,有一个!这是其中的一部分 web.py。如果由于上述原因我没有真正尝试过,所以我不能说它是否好。

PS。我知道Ruby在keyvalue商店中也有一个很好的DAL项目,但我现在找不到它......也许在某些时候可以很好地移植到Python。


7
2017-08-21 00:55



web2py(web2py.com)和web.py(webpy.org)是2个不同的框架:) - Steven Kryskalla
我相信你在谈论Web2Py: web2py.com/book/default/chapter/06 并且还提到了 web2py.com 主页,在 会谈 部分。 - Cyril N.


如今,谷歌已经推出了Cloud SQL


3
2017-07-04 08:53