Re: Multiple result sets - Mailing list pgsql-general

From Adam Rich
Subject Re: Multiple result sets
Date
Msg-id 041101c8c427$22b84750$6828d5f0$@r@sbcglobal.net
Whole thread Raw
In response to Re: Multiple result sets  (Clodoaldo <clodoaldo.pinto.neto@gmail.com>)
Responses Re: Multiple result sets  (Ivan Sergio Borgonovo <mail@webthatworks.it>)
List pgsql-general
> >> I need that 5 queries, fired from the same ajax request to a web
> >> python application, see the same database snapshot. The driver is
> >> psycopg2.
> >>
> >> Since postgresql 8.2 functions can't return multiple result sets
> >> what would be the best aproach?
> >>
> > You want to set your transaction isolation to "Serializable".
> > Then execute your 5 queries via the same connection, and the same
> > Transaction.
> >
> > You can do that with this command:
> >
> > BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
>
> I'm not sure i got it. You mean like this?:
>
> import psycopg2 as db
> dsn = 'host=localhost dbname=dbname user=user password=passwd'
> connection = db.connect(dsn)
> cursor = connection.cursor()
>
> cursor.execute('BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;');
> rs1 = cursor.execute(query_1, (param1,))
> rs2 = cursor.execute(query_2, (param2,))
> cursor.execute('commit;');
>
> cursor.close()
> connection.close()
>
> I tested it and it raises no exception. I just don't understand if a
> transaction persists between execute() calls.
>

I am not familiar with the python library, but that looks correct to me.
You can always test it by adding a sleep between your two queries and
modifying the database from a console connection during the sleep.

Note that I'm assuming your 5 queries are all read-only selects.
If you're modifying data during your queries, and another concurrent
database connection modifies the same data during your transaction,
the later modifications will fail under serializable isolation.








pgsql-general by date:

Previous
From: Clodoaldo
Date:
Subject: Re: Multiple result sets
Next
From: Ivan Sergio Borgonovo
Date:
Subject: Re: Multiple result sets