Обсуждение: Python psycopg transaction isolation level

Поиск
Список
Период
Сортировка

Python psycopg transaction isolation level

От
Eugene Prokopiev
Дата:
Hi,

I have a simple python script:

connection = psycopg.connect("host="+server+" dbname="+database+" 
user="+login+" password="+password)
cursor_modify = connection.cursor()
cursor_modify.execute("update messages set flag=1 where flag=0")
connection.commit()

On running it sometimes I got:

psycopg.ProgrammingError: ERROR:  could not serialize access due to 
concurrent update

How can I setup isolation level for waiting end of executing other 
transaction and execute update without any error?

--
Thanks,
Eugene Prokopiev


Re: Python psycopg transaction isolation level

От
Michael Fuhr
Дата:
On Tue, Feb 28, 2006 at 09:27:29PM +0300, Eugene Prokopiev wrote:
> connection = psycopg.connect("host="+server+" dbname="+database+" 
> user="+login+" password="+password)
> cursor_modify = connection.cursor()
> cursor_modify.execute("update messages set flag=1 where flag=0")
> connection.commit()
> 
> On running it sometimes I got:
> 
> psycopg.ProgrammingError: ERROR:  could not serialize access due to 
> concurrent update

psycopg's default isolation level is SERIALIZABLE.  I think the way
to set the isolation level to READ COMMITTED is:

connection = psycopg.connect(...)
connection.set_isolation_level(1)

You'll find more psycopg expertise on the psycopg mailing list:

http://lists.initd.org/mailman/listinfo/psycopg

-- 
Michael Fuhr