Was ist der Unterschied zwischen der Verwendung von scoped_session
explizit:Unterschied zwischen sqlalchemy scoped_session (..) und scoped_session (..)()
engine = create_engine(url)
session = scoped_session(sessionmaker(bind=engine))
session.add(..)
session.commit()
session.remove()
session.add(..)
session.commit()
session.remove()
und Erstellen Instanz scoped_session
Objekt:
engine = create_engine(url)
session = scoped_session(sessionmaker(bind=engine))
session().add(..)
session().commit()
session.remove()
session().add(..)
session().commit()
session.remove()
Sqlalchemy Immer die gleiche Sitzung für den gleichen Thread durch den Aufruf session()
zurückgeben:
>> session() is session()
True
>> session is session()
False
Ist das eine geeignete Methode zum Bearbeiten einer Verbindung in einer Multithread-Umgebung? Wenn ja, warum erlaubt sqlalchemy Abfragen mit session
anstelle von session()
?
vorsichtig mit der Terminologie. Ein Generator in Python ist eine sehr spezifische Sache; Von einer "Fabrik" sprichst du. – univerio
"" scoped_session "gibt ein Generator-Objekt zurück, also müssen Sie den Generator aufrufen, um eine Instanz zurückzugeben" - das Beste ist, dass ich nicht muss, weil beide funktionieren: 'Session.commit()' und 'Session(). commit() '. Und die Frage war, was ist der Unterschied? Vielleicht funktioniert 'Session(). Commit()' in Multi-Threading während 'Session.commit()' nicht? – User
Meine Antwort wurde aktualisiert. Im Grunde gibt die Factory automatisch die richtige lokale Thread-Sitzung zurück. Ich finde diese Funktionalität unklar, aber zu jeder für sich. – ApolloFortyNine