SQLALchemy: Werkzeug wirft RuntimeError

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Samstag 20. Dezember 2008, 18:20

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?
Zuletzt geändert von derdon am Sonntag 21. Dezember 2008, 19:27, insgesamt 1-mal geändert.
DasIch
User
Beiträge: 2465
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Samstag 20. Dezember 2008, 18:34

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
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Samstag 20. Dezember 2008, 19:39

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/
DasIch
User
Beiträge: 2465
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Samstag 20. Dezember 2008, 20:04

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.
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Sonntag 21. Dezember 2008, 19:27

Danke, es funktioniert!
Antworten