Ich möchte die Python-Version von App Engine verwenden, aber anstatt meinen Code speziell für den Google Data Store zu schreiben, möchte ich meine Modelle mit einem generischen Python-ORM erstellen, das an Big Table angehängt werden kann. wenn ich es vorziehe, eine regelmäßige Datenbank zu einem späteren Zeitpunkt. Gibt es irgendwelche Python ORM wie SQLAlchemy, die dies zulassen würden?Funktionieren Python ORMs (SQLAlchemy?) Mit Google App Engine?
Antwort
Technisch würde dies nicht als ORM (Object Relational Mapper), sondern als DAL (Database Abstraction Layer) bezeichnet. Der ORM-Teil ist für AppEngine nicht wirklich interessant, da sich die API bereits um die Objektzuordnung kümmert und einige einfache relationale Zuordnungen durchführt (siehe RelationProperty).
Beachten Sie auch, dass ein DAL niemals zwischen AppEngine-Datenspeicher und einer "normalen" SQL-Datenbank wie mysql wechseln kann, weil sie sehr unterschiedlich funktionieren. Sie können zwischen verschiedenen Schlüsselwertspeichern wie reddis, mongo oder tokyo cabinet wechseln. Aber da sie alle so unterschiedliche Eigenschaften haben, würde ich wirklich zweimal darüber nachdenken, bevor ich einen benutze.
Schließlich sitzt die DAL traditionell oben auf der DB-Schnittstelle, aber mit AppEngine's API können Sie Ihre eigenen "Stubs" implementieren, die Sie grundsätzlich andere Speicher-Backends auf ihrer API verwenden können. Die Leute bei Mongo haben one für MongoDB geschrieben, was sehr nett ist. Und der dev_appserver kommt mit einem Dateisystem-basierten.
Und jetzt zur Antwort: ja es gibt einen! Es ist Teil von web.py. Ich habe es nicht wirklich aus den oben genannten Gründen versucht, also kann ich nicht wirklich sagen, ob es gut ist.
PS. Ich weiß, dass Ruby ein schönes DAL-Projekt für Keyvalue-Stores in Arbeit hat, aber ich kann es jetzt nicht finden ... Vielleicht ist es schön, irgendwann zu Python zu portieren.
Heutzutage sie tun, da Google Cloud SQL
web2py ins Leben gerufen hat (web2py.com) und web.py (webpy.org) sind 2 verschiedene Frameworks :) –
Ich glaube, Sie web2py reden: http://www.web2py.com/book/default/chapter/06 und auch auf der http://web2py.com/ Homepage im Abschnitt ** Talks to ** erwähnt. –