How to identify a transaction that has already begun

92 views
Skip to first unread message

Jaimy Azle

unread,
Jan 1, 2009, 11:52:06 PM1/1/09
to sqlal...@googlegroups.com
Hi All,

I configure a session (from elixir) using this code:

session = sqlalchemy.orm.scoped_session(
sqlalchemy.orm.sessionmaker(
autoflush=False,
autocommit=False
)
)

Is there any way to identify whether the transaction has already
begun to avoid exception?

--
Salam,

-Jaimy Azle

"Great new ideas usually come from very small teams...
don't give up so easily."
-- John Kaster


Michael Bayer

unread,
Jan 2, 2009, 12:04:54 PM1/2/09
to sqlal...@googlegroups.com
session has an is_active flag which indicates this, but if you are
using autocommit=False, the Session is always within a transaction and
you should never call begin().

Jaimy Azle

unread,
Jan 3, 2009, 4:55:45 AM1/3/09
to sqlal...@googlegroups.com
On Saturday, January 3, 2009, 12:04:54 AM, Michael Bayer wrote:

>> session = sqlalchemy.orm.scoped_session(
>> sqlalchemy.orm.sessionmaker(
>> autoflush=False,
>> autocommit=False
>> )
>> )

> session has an is_active flag which indicates this, but if you are


> using autocommit=False, the Session is always within a transaction and
> you should never call begin().

Thanks, but is_active flag could not be accessed from ScopedSession
instance since it is not listed on Session.public_methods. is there
any alternate way could be used?

Michael Bayer

unread,
Jan 3, 2009, 11:12:37 AM1/3/09
to sqlal...@googlegroups.com

On Jan 3, 2009, at 4:55 AM, Jaimy Azle wrote:

>
> On Saturday, January 3, 2009, 12:04:54 AM, Michael Bayer wrote:
>
>>> session = sqlalchemy.orm.scoped_session(
>>> sqlalchemy.orm.sessionmaker(
>>> autoflush=False,
>>> autocommit=False
>>> )
>>> )
>
>> session has an is_active flag which indicates this, but if you are
>> using autocommit=False, the Session is always within a transaction
>> and
>> you should never call begin().
>
> Thanks, but is_active flag could not be accessed from ScopedSession
> instance since it is not listed on Session.public_methods. is there
> any alternate way could be used?

is_active is added to ScopedSession in the latest trunk. But you can
always get to any method on Session directly by just calling the
scoped session. scopedsession().is_active.

Reply all
Reply to author
Forward
0 new messages