On Aug 10, 2010, at 12:38 AM, Jon Nelson wrote: > On Mon, Aug 9, 2010 at 11:27 PM, Michael Bayer <mike...@zzzcomputing.com> > wrote: >> >> On Aug 10, 2010, at 12:03 AM, Jon Nelson wrote: >> >>> I tried setting isolation_level to SERIALIZABLE in my create_engine >>> options, while using psycopg2. >>> However, an strace clearly shows that it is using READ COMMITTED. >>> Is setting the isolation_level not supported with psycopg2? >> >> >> Here's a test: >> >> eng = create_engine('postgresql://....', isolation_level='SERIALIZABLE', >> echo=True) >> print eng.execute('show transaction isolation level').scalar() >> >> for me it returns 'serializable'. > > Aha, but in psycopg2, transactions ALWAYS get a new transaction level > (set on the psycopg2 connection object with set_isolation_level). Add > to the above:
can you try this patch and let me know it does everything you need: diff -r 753e46f6868c lib/sqlalchemy/dialects/postgresql/psycopg2.py --- a/lib/sqlalchemy/dialects/postgresql/psycopg2.py Mon Aug 09 20:32:37 2010 -0400 +++ b/lib/sqlalchemy/dialects/postgresql/psycopg2.py Tue Aug 10 09:49:32 2010 -0400 @@ -208,7 +208,20 @@ return psycopg def on_connect(self): - base_on_connect = super(PGDialect_psycopg2, self).on_connect() + if self.isolation_level is not None: + extensions = __import__('psycopg2.extensions').extensions + isol = { + 'READ_COMMITTED':extensions.ISOLATION_LEVEL_READ_COMMITTED, + 'READ_UNCOMMITTED':extensions.ISOLATION_LEVEL_READ_UNCOMMITTED, + 'REPEATABLE_READ':extensions.ISOLATION_LEVEL_REPEATABLE_READ, + 'SERIALIZABLE':extensions.ISOLATION_LEVEL_SERIALIZABLE + + } + def base_on_connect(conn): + conn.set_isolation_level(isol[self.isolation_level]) + else: + base_on_connect = None + if self.dbapi and self.use_native_unicode: extensions = __import__('psycopg2.extensions').extensions def connect(conn): -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalch...@googlegroups.com. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.