:paramref:`.Pool.reset_on_return` parameter as a synonym for ``None``,
so that string values can be used for all settings, allowing
.ini file utilities like :func:`.engine_from_config` to be usable
without issue.
fixes #3375
(cherry picked from commit
c2e3002503242331fc8f2b314e0d4f3c65de9d73)
.. changelog::
:version: 0.9.10
+ .. change::
+ :tags: bug, engine
+ :tickets: 3375
+ :versions: 1.0.1
+
+ Added the string value ``"none"`` to those accepted by the
+ :paramref:`.Pool.reset_on_return` parameter as a synonym for ``None``,
+ so that string values can be used for all settings, allowing
+ utilities like :func:`.engine_from_config` to be usable without
+ issue.
+
.. change::
:tags: bug, sql
:tickets: 3362
database that supports transactions,
as it will lead to deadlocks and stale
state.
+ * ``"none"`` - same as ``None``
+
+ .. versionadded:: 0.9.10
+
* ``False`` - same as None, this is here for
backwards compatibility.
self._use_threadlocal = use_threadlocal
if reset_on_return in ('rollback', True, reset_rollback):
self._reset_on_return = reset_rollback
- elif reset_on_return in (None, False, reset_none):
+ elif reset_on_return in ('none', None, False, reset_none):
self._reset_on_return = reset_none
elif reset_on_return in ('commit', reset_commit):
self._reset_on_return = reset_commit
'z=somevalue')
assert e.echo is True
+ def test_pool_reset_on_return_from_config(self):
+ dbapi = mock_dbapi
+
+ for value, expected in [
+ ("rollback", pool.reset_rollback),
+ ("commit", pool.reset_commit),
+ ("none", pool.reset_none)
+ ]:
+ config = {
+ 'sqlalchemy.url': 'postgresql://scott:tiger@somehost/test',
+ 'sqlalchemy.pool_reset_on_return': value}
+
+ e = engine_from_config(config, module=dbapi, _initialize=False)
+ eq_(e.pool._reset_on_return, expected)
+
def test_engine_from_config_custom(self):
from sqlalchemy import util
from sqlalchemy.dialects import registry