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.  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?

TIA,

Randall Nortman
_______________________________________________
DB-SIG maillist  -  DB-SIG@python.org
http://mail.python.org/mailman/listinfo/db-sig

Reply via email to