Ответ 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 в какой-то момент.