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.

-- 
Marc-Andre Lemburg
eGenix.com

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
               http://www.egenix.com/company/contact/
_______________________________________________
DB-SIG maillist  -  DB-SIG@python.org
http://mail.python.org/mailman/listinfo/db-sig

Reply via email to