Работают ли любые ORM-устройства Python (SQLAlchemy?) С Google App Engine?

Я бы хотел использовать версию App Engine для Python, но вместо того, чтобы писать свой код специально для Хранилища данных Google, я бы хотел создать мои модели с помощью общего ORM Python, который можно было бы привязать к Big Table, или, если я предпочитаю, регулярную базу данных в более позднее время. Есть ли какой-либо Python ORM, такой как SQLAlchemy, который позволит это?

Ответ 1

Технически это не будет называться ORM (Object Relational Mapper), а DAL (уровень абстракции базы данных). Часть ORM не очень интересна для AppEngine, поскольку API уже занимается отображением объектов и делает некоторое простое реляционное сопоставление (см. RelationProperty).

Также поймите, что DAL никогда не позволит вам переключаться между хранилищем данных AppEngine и "нормальной" SQL-базой данных, такой как mysql, потому что они работают по-разному. Это может позволить вам переключаться между различными хранилищами ключевых значений, такими как reddis, mongo или tokyo. Но поскольку все они имеют очень разные характеристики, я бы подумал дважды, прежде чем использовать их.

Наконец, DAL традиционно сидит поверх интерфейса DB, но с AppEngine api вы можете реализовать свои собственные "заглушки", которые в основном позволяют использовать другие бэкэнды для хранения на их api. Люди в Mongo писали один для MongoDB, который очень приятный. И dev_appserver поставляется с файловой системой.

И теперь к ответу: да есть один! Это часть web.py. Я действительно не пробовал, если по причинам выше, поэтому я не могу сказать, хорошо ли это.

PS. Я знаю, что Ruby имеет хороший проект DAL для хранилищ keyvalue в работе тоже, но я не могу его найти сейчас... Может быть, приятно переносить на Python в какой-то момент.

Ответ 2

В настоящее время это происходит, поскольку Google запустил Cloud SQL