introduce "autobegin" concept for Connection

because engine.connect() and engine.begin() should feature
identical internal behavior, with the sole exception that
one rolls back and the end and the other commits at the end,
while also supporting execution options like transaction isolation level
at the connection level, include that engine.connect() will
return a connection that uses autobegin in the same way as the
session will.   This is solely to support the "begin" event
noting that a transaction is begun which is tracked on the
connection.    Behavior and design should be very similar to that
of the ORM session and "Transaction" should no longer be a very
explicit object.

Change-Id: I9c317d242ca7a435de0f17b1618355e29a10d1bc
This commit is contained in:
Mike Bayer
2020-03-26 17:26:57 -04:00
parent 2d4171ec8c
commit ee1e1e2f55
+9 -2
View File
@@ -210,7 +210,13 @@ method::
conn.execute(text("some other SQL"))
conn.rollback()
For the ORM, the above two patterns are already more or less how the
Above, the ``engine.connect()`` method will return a :class:`.Connection` that
features **autobegin**, meaning the ``begin()`` event is emitted when the
execute method is first used (note however that there is no actual "BEGIN" in
the Python DBAPI). This is the same as how the ORM :class:`.Session` will
work also and is not too dissimilar from how things work now.
For the ORM, the above patterns are already more or less how the
:class:`.Session` is used already::
session = sessionmaker()
@@ -279,7 +285,8 @@ driver.
To use a connection in autocommit mode::
with engine.connect().execution_options(isolation_level="AUTOCOMMIT") as conn:
result = conn.execute(stmt)
conn.execute(text("CREATE DATABASE foobar"))
The above code is already available in current SQLAlchemy releases. Driver
support is available for PostgreSQL, MySQL, SQL Server, and newer releases