Я хотел бы использовать версию App Engine для Python, но вместо того, чтобы писать свой код специально для Google Data Store, я хотел бы создавать свои модели с помощью универсального ORM Python, который можно было бы присоединить к Big Table, или, если я предпочитаю, обычную базу данных в более позднее время. Есть ли какой-либо Python ORM, такой как SQLAlchemy, который позволил бы это?
Работают ли какие-либо ORM Python (SQLAlchemy?) с Google App Engine?
Ответы (2)
Технически это называется не ORM (объектно-реляционное сопоставление), а DAL (уровень абстракции базы данных). Часть ORM не очень интересна для AppEngine, поскольку API уже заботится о сопоставлении объектов и выполняет некоторые простые реляционные сопоставления (см. RelationProperty).
Также поймите, что DAL никогда не позволит вам переключаться между хранилищем данных AppEngine и «нормальной» базой данных sql, такой как mysql, потому что они работают совершенно по-разному. Это может позволить вам переключаться между различными хранилищами ключевых значений, такими как reddis, mongo или tokyo кабинет. Но поскольку все они имеют такие разные характеристики, я бы действительно дважды подумал, прежде чем использовать один.
Наконец, DAL традиционно находится поверх интерфейса БД, но с API AppEngine вы можете реализовать свои собственные «заглушки», которые в основном позволяют вам использовать другие серверные части хранилища на их API. Люди в Mongo написали one для MongoDB, что очень приятно. И dev_appserver поставляется с файловой системой.
А теперь к ответу: да есть! Это часть web.py. Я действительно не пробовал, если по причинам, указанным выше, поэтому я не могу сказать, хорошо ли это.
PS. Я знаю, что у Ruby также есть хороший проект DAL для хранилищ значений ключей, но я не могу найти его сейчас... Может быть, в какой-то момент будет неплохо перенести его на Python.
В настоящее время они делают это с тех пор, как Google запустил Cloud SQL.