Я хотел бы использовать версию App Engine для Python, но вместо того, чтобы писать свой код специально для Google Data Store, я хотел бы создавать свои модели с помощью универсального ORM Python, который можно было бы присоединить к Big Table, или, если я предпочитаю, обычную базу данных в более позднее время. Есть ли какой-либо Python ORM, такой как SQLAlchemy, который позволил бы это?
Вопрос
Работают ли какие-либо ORM Python (SQLAlchemy?) с Google App Engine?
Ответы
Ответ 1 · рейтинг 7 · Koen Bok
Технически это называется не 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.
Ответ 2 · рейтинг 2 · PanosJee
В настоящее время они делают это с тех пор, как Google запустил Cloud SQL.
Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.