homepage

This issue tracker has been migrated to GitHub , and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author nagylzs
Recipients georg.brandl, nagylzs
Date 2010年03月15日.09:01:41
SpamBayes Score 0.002112487
Marked as misclassified No
Message-id <1268643705.49.0.319902511171.issue8145@psf.upfronthosting.co.za>
In-reply-to
Content
Clarify what isolation_level does, and how to use it, and why connections do not commit/rollback in some cases.
Details here:
http://mail.python.org/pipermail/python-list/2010-March/1239374.html
I'll paste code for ctx_manager_2.py here. This is a new file, I could not include it as a diff:
import sqlite3
class MyConn(sqlite3.Connection):
 def __enter__(self):
 self.execute("BEGIN")
 return self
 def __exit__(self,exc_type,exc_info,traceback):
 if exc_type is None:
 self.execute("COMMIT")
 else:
 self.execute("ROLLBACK")
conn = sqlite3.connect(':memory:',factory=MyConn)
conn.isolation_level = None
with conn:
 conn.execute("create table a ( i integer ) ")
 conn.execute("insert into a values (1)")
try:
 with conn:
 conn.execute("insert into a values (2)")
 conn.execute("savepoint sp1")
 conn.execute("insert into a values (3)")
 conn.execute("rollback to sp1")
 conn.execute("insert into a values (4)")
 print "Before rollback: 1,2,4"
 for row in conn.execute("select * from a"):
 print row[0] # prints 1,2,4
 raise Exception
except:
 pass
print "After rollback: 1"
for row in conn.execute("select * from a"):
 print row[0] # prints 1
History
Date User Action Args
2010年03月15日 09:01:46nagylzssetrecipients: + nagylzs, georg.brandl
2010年03月15日 09:01:45nagylzssetmessageid: <1268643705.49.0.319902511171.issue8145@psf.upfronthosting.co.za>
2010年03月15日 09:01:43nagylzslinkissue8145 messages
2010年03月15日 09:01:42nagylzscreate

AltStyle によって変換されたページ (->オリジナル) /