Seite 1 von 1

SQLALchemy: Werkzeug wirft RuntimeError

Verfasst: Samstag 20. Dezember 2008, 18:20
von derdon
Hallo,

hier die views.py und der Traceback. Wenn ich das Formular mit Werten abschicke (Zeile 32) und einen bestimmten Datensatz herausfiltern möchte (Zeile 34), dann beschwert sich nicht SQLALchemy, sondern Werkzeug. DasIch hat mir im IRC query_property empfohlen, was ich dann auch versucht habe, anzuwenden. Deswegen hier auch die models.py.

Wende ich query_property falsch an oder liegt der Fehler woanders begraben?

Verfasst: Samstag 20. Dezember 2008, 18:34
von DasIch
Das Problem scheint in my_cms.utils zu liegen. Scheint damit zusammenzuhängen wie du auf dass application objekt zugreifst. Statt das direkt zu machen greife mal darauf als Attribut von local zu also:

Code: Alles auswählen

session = scoped_session(lambda: create_session(
    local.application.database_engine,
    # was auch immer du hier sonst noch so hast
    ),
    local_manager.get_ident)
Siehe dazu auch den Code in werkzeug.local

Verfasst: Samstag 20. Dezember 2008, 19:39
von derdon
So sieht momentan meine utils.py aus: http://paste.pocoo.org/show/96168/ . Wenn ich aus

Code: Alles auswählen

session = scoped_session(lambda: create_session(application.database_engine,
                                                autocommit=False),
                         local_manager.get_ident)

Code: Alles auswählen

session = scoped_session(lambda: create_session(local.application.database_engine,
                                                autocommit=False),
                         local_manager.get_ident)
mache, dann wirft gibts nen AttributeError, weil local nicht die Eigenschaft application besitzt. Und falls jemand auch noch die application.py sehen will, hier ist sie: http://paste.pocoo.org/show/96173/

Verfasst: Samstag 20. Dezember 2008, 20:04
von DasIch
CMS.dispatch könnte ein "local.application = self" vertragen, wie z.B. in diesem Beispiel. Steht auch im Werkzeug Tutorial
Part 1: The WSGI Application hat geschrieben:And then comes the request dispatching function.[...]Once again we bind the application to the local object, this time, however, we have to do this, otherwise things will break soon.

Verfasst: Sonntag 21. Dezember 2008, 19:27
von derdon
Danke, es funktioniert!