[DB-SIG] DB API compliance test--clarification
M.-A. Lemburg
mal@lemburg.com
Tue, 11 Mar 2003 20:40:11 +0100
Andy Dustman wrote:
> On Mon, 2003-02-17 at 03:00, M.-A. Lemburg wrote:
>
>>David Rushby wrote:
>>
>>>Code snippet from Stuart's DB API compliance suite:
>>>
>>>-----------
>>>def test_commit(self):
>>> con = self._connect()
>>> try:
>>> # Commit must work, even if it doesn't do anything
>>> con.commit()
>>> finally:
>>> con.close()
>>>-----------
>>>
>>>Is it reasonable to commit a transaction without ever having created
>>>it?
>>
>>You create the transaction implicitly by connecting to the database.
>
> Transactions are implicitly created when you execute a statement that
> changes the state of the database (INSERT, UPDATE, DELETE), or retrieves
> data (SELECT). Note that in at least some cases (MySQL), CREATE and DROP
> TABLE are NOT transactional.
Then again, calling MySQL a transactional database is a bit far-
fetched ;-) It is true, however, that some databases have
non-transactional statements. Dropping a table and then expecting
the database to undo this with a .rollback() is something
you shouldn't really try in real life :-)
> Some examples of this:
> ...
Ok, so the above check should execute at least one statement
on the connection, e.g. do a select. That should cover all
definitions.
--
Marc-Andre Lemburg
eGenix.com
Professional Python Software directly from the Source (#1, Mar 11 2003)
>>> Python/Zope Products & Consulting ... http://www.egenix.com/
>>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/
________________________________________________________________________
Python UK 2003, Oxford: 21 days left
EuroPython 2003, Charleroi, Belgium: 105 days left