[DB-SIG] When must transactions begin?
mal at egenix.com
Mon Sep 20 18:49:29 CEST 2010
Randall Nortman wrote:
> PEP 249 says that transactions end on commit() or rollback(), but it
> doesn't explicitly state when transactions should begin, and there is
> no begin() method.
Transactions start implicitly after you connect and after you call
.commit() or .rollback(). They are not started for each statement.
> I think the implication is that transactions begin
> on the first execute(), but that's not explicitly stated. At least
> one driver, pysqlite2/sqlite3, does not start a transaction for a
> SELECT statement. It waits for a DML statement (INSERT, UPDATE,
> DELETE) before opening a transaction. Other drivers open transactions
> on any statement, including SELECT.
> My question for the DB-SIG is: Can I call it a bug in pysqlite2 that
> it does not open transactions on SELECT? Should the spec be amended
> to make this explicit? Or are both behaviors acceptable, in which
> case perhaps a begin() method needs to be added for when the user
> wants control over opening transactions?
I should probably add a note to PEP 249 about this.
Professional Python Services directly from the Source (#1, Sep 20 2010)
>>> Python/Zope Consulting and Support ... http://www.egenix.com/
>>> mxODBC.Zope.Database.Adapter ... http://zope.egenix.com/
>>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/
::: Try our new mxODBC.Connect Python Database Interface for free ! ::::
eGenix.com Software, Skills and Services GmbH Pastor-Loeh-Str.48
D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg
Registered at Amtsgericht Duesseldorf: HRB 46611
More information about the DB-SIG