'How does a session work with SQL Alchemy with pool?

engine = db.create_engine(self.url, convert_unicode=True, pool_size=5, pool_recycle=1800, max_overflow=10)

connection = self.engine.connect()

Session = scoped_session(sessionmaker(bind=self.engine, autocommit=False, autoflush=True))

I initialize my session like this. And

def first():
    with Session() as session:
        second(session)

def second(session):
    session.add(obj)
    third(session)

def third(session):
    session.execute(query)

I use my session like this.
I think the pool is assigned one for each session. So, I think that the above code can work well when pool_size=1, max_overflow=0. But, when I set up like that It stuck and return Exception like.

descriptor '__init__' requires a 'super' object but received a 'tuple'

Why is that? The pool is assigned more than one per session rather than one by one?
And when using session with with, Can do I careless commit and rollback when exception?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source