.. changelog::
:version: 0.9.8
+ .. change::
+ :tags: bug, engine
+ :versions: 1.0.0
+ :tickets: 3200
+
+ The execution options passed to an :class:`.Engine` either via
+ :paramref:`.create_engine.execution_options` or
+ :meth:`.Engine.update_execution_options` are not passed to the
+ special :class:`.Connection` used to initialize the dialect
+ within the "first connect" event; dialects will usually
+ perform their own queries in this phase, and none of the
+ current available options should be applied here. In
+ particular, the "autocommit" option was causing an attempt to
+ autocommit within this initial connect which would fail with
+ an AttributeError due to the non-standard state of the
+ :class:`.Connection`.
+
.. change::
:tags: bug, sqlite
:versions: 1.0.0
def first_connect(dbapi_connection, connection_record):
c = base.Connection(engine, connection=dbapi_connection,
_has_events=False)
+ c._execution_options = {}
dialect.initialize(c)
event.listen(pool, 'first_connect', first_connect, once=True)
eq_(canary, ["l1", "l2", "l3", "l1", "l2"])
+ @testing.requires.ad_hoc_engines
+ def test_autocommit_option_no_issue_first_connect(self):
+ eng = create_engine(testing.db.url)
+ eng.update_execution_options(autocommit=True)
+ conn = eng.connect()
+ eq_(conn._execution_options, {"autocommit": True})
+ conn.close()
+
@testing.requires.ad_hoc_engines
def test_generative_engine_event_dispatch_hasevents(self):
def l1(*arg, **kw):