scoped_session SQLAlchemy
Verfasst: Donnerstag 28. Mai 2009, 20:54
Hallo,
komme hier gerade mit der scoped_session nicht wirklich zurecht.
So erstelle ich meine Models plus Session.
Das Problem bei dieser Methode ist, dass wenn ich mehrere Threads starte, ein OperationalError kommt mit: locked database.
Ursprünglich hatte ich es sowieso so verstanden, dass ich pro Thread einfach die Session instantiieren muss.
Allerdings werden dann meine Sachen in der DB nicht gespeichert, wenn ich sowas hier im Thread mache:
Das Ganze wird ja automatisch zur Session hinzugefügt, da ich den session.mapper verwende - sieht man auch daran, dass wenn ich im gleichen Thread wieder einen query mache, dass die Objekte da sind. Anscheinend gecached - in der Datenbank sind sie aber nicht gespeichert.
Was mache ich da falsch?
Danke!
komme hier gerade mit der scoped_session nicht wirklich zurecht.
Code: Alles auswählen
database_engine = create_engine('sqlite:///:memory:', convert_unicode=True)
session = scoped_session(sessionmaker(bind=database_engine))
metadata = MetaData()
mapper = session.mapper
mapper(Exl, ex_table)
Code: Alles auswählen
class T(threading.Thread):
def run(self):
while True:
session.query(Ex).all()
if __name__ == '__main__':
T().start()
Code: Alles auswählen
class T(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.session = session()
def run(self):
while True:
session.query(Ex).all()
if __name__ == '__main__':
T().start()
Allerdings werden dann meine Sachen in der DB nicht gespeichert, wenn ich sowas hier im Thread mache:
Code: Alles auswählen
Ex(xy='xy')
self.session.commit()
Was mache ich da falsch?
Danke!