> --
> You received this message because you are subscribed to the Google Groups "sqlalchemy" group.
> To post to this group, send email to sqlal...@googlegroups.com.
> To unsubscribe from this group, send email to sqlalchemy+...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
>
The confusion here is that the documentation for "commit", which I'm assuming you're reading is http://www.sqlalchemy.org/docs/orm/session.html#committing, refers to the term "transaction", which, while it's not deeply described at that point for the sake of clarity, is not the same thing as an actual transaction on an individual DBAPI connection connected to a database across a network.
An in-depth description of what "transaction" means with regards to the session is later down the page at http://www.sqlalchemy.org/docs/orm/session.html#managing-transactions , pretty much the first paragraph.
To restate, a "transaction" with regards to the Session is a boundary which will be terminated upon the next call to commit() or rollback(). The transaction itself is an in-memory structure which includes a collection of zero or more DBAPI connections. When the transaction is committed or rolled back, the commit() or rollback() method is ultimately called upon each DBAPI connection that is present. A DBAPI connection becomes present in the current "transaction" when it is first asked to participate in a statement execution. For those engines for which no statement execution has occurred within the scope of the Session's "transaction", no DBAPI connection is procured and no network communication occurs.
Hope this clears it up !