Simon, Thanks for your kind answer. So when I have several threads trying to insert/update the same database (pgsql or sqlite) at the same time, how can I ensure consistency? By using scoped session? This will rely on the DB implementation behind, right?
在 2018年1月15日星期一 UTC+8下午5:21:42,Simon King写道: > > On Mon, Jan 15, 2018 at 8:34 AM, <ging...@gmail.com <javascript:>> > wrote: > > Hello, > > > > Sessions are not thread safe. > > But for the scoped sessions, each thread will have its own session, my > > question is, even the scoped session itself rely on the thread safety > > feature of the DB behind? > > for example, PGSQL server may handle multiple connections and resolving > the > > update/insert requests, but for SQLITE3, normally it's NOT thread safe, > how > > scoped session will behave towards such DB system? > > > > Not sure if I'm stating clearly here, Thanks! > > A session (scoped or otherwise) normally operates on a single > connection, either because it was explicitly bound to a connection, or > because it was bound to an engine and it checked a connection out of > the engine's connection pool. This usually ensures that a connection > is never used simultaneously by multiple threads. > > SQLAlchemy does have some special behaviour for SQLite, described here: > > > http://docs.sqlalchemy.org/en/latest/dialects/sqlite.html#threading-pooling-behavior > > > It says that connections will never be shared between threads, and for > file-based SQLite databases, the default is for there to be no > connection pooling (it uses a NullPool). Whenever a connection is > requested from the pool, it will always be freshly created, and > discarded when it is returned to the pool. > > I assume that sqlite itself will be operating in "Multi-thread" mode > as described at https://sqlite.org/threadsafe.html > > Hope that helps, > > Simon > -- SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper http://www.sqlalchemy.org/ To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description. --- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.