mysql select some sort of caching

Gabriel Genellina gagsl-py2 at yahoo.com.ar
Thu Oct 22 00:30:52 EDT 2009


En Wed, 21 Oct 2009 22:24:49 -0300, David Sfiligoi <sfiligoi at gmail.com>  
escribió:

> On Wed, 21 Oct 2009 00:45:21 -0300, Gabriel Genellina wrote:
>>
>> If you want to keep the cursor open, you must commit the (implicit)
>> current transaction, even if it only contains selects (a rollback would
>> work too).
>> Alternatively, lower the transaction isolation level below "repeatable
>> reads". Note that in other scenarios, ensuring that the same query
>> returns the same results is a Good Thing.
>
> Thanks Gabriel,  I tried the commit suggestion and it works.  I was
> thinking that everytime I made a select query and if the data changed
> between the select query(like anohter application updating a field and
> commiting the transaction), the select query routing inside the database
> engine would recognised that the data is no longer the same as the
> previous exact same query and would return me the new data.

Yes, this is known as "phantom read", and may happen depending on the  
transaction isolation level currently in effect.  Although in your use  
case it may be a desirable feature, in other cases it's not. See  
http://en.wikipedia.org/wiki/Isolation_(database_systems)

-- 
Gabriel Genellina




More information about the Python-list mailing list