Seite 1 von 1

Storm und autoreload

Verfasst: Samstag 25. September 2010, 11:57
von sebste
Hallo Zusammen.
Komme gerade nicht weiter:

Ich verwende storm in einer Applikation als ORM.
Eigentlich läuft alles wunderbar bis auf den Umstand, dass Änderungen die von ausserhalb der Applikation an der Datenbank gemacht werden erst beim nächsten Start meiner Applikation in den Store übernommen werden.

Hier mal die Klasse für eine Tabelle:

Code: Alles auswählen

class MenuLink(object):
    __storm_table__="menu_link"

    id = Int(primary=True)
    menu_name=Unicode()
    name = Unicode()
    url =Unicode()
    target = Unicode()
    link_order=Int()
    published=Bool(default=AutoReload)
Konkret soll MenuLink.published direkt in der Datenbank geänder werden (Momentan mache ich das direkt per psql).
Diese Änderung soll dann direkt in meiner laufenden Applikation übernommen werden.
Also mache ich folgende Abfrage:

Code: Alles auswählen

menu=store.find(MenuLink,  MenuLink.published==True)
Der store holt sich aber nicht die neuen Daten aus der Datenbank und berücksichtigt daher auch die Änderung nicht bis ich eine neue DB-Verbindung und einen neuen Store mache. Das ist aber nicht Zweck der Übung, da ich ja nur einen Store pro Thread haben sollte.

Irgend jemand eine Idee?
Danke, Sebastian

Re: Storm und autoreload

Verfasst: Samstag 25. September 2010, 12:27
von sebste
Hab nen Workaround gefunden.

Wenn man vor der Abfrage committed, dann wird der store aktualisiert:

Code: Alles auswählen

store.commit() #commit first in order to get db-changes from outside app
menu=store.find(MenuLink,  MenuLink.published==True)
Dadurch kann man sich auch das AutoReload sparen.
Irgendwie fühlt sich das aber wie ein Hack an. Gibt´s ne schönere Variante?

Liebe Grüße, Sebastian