From 971b9e62df7b4101f48521fc579530916cd7766d Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Tue, 16 Jul 2019 09:39:49 -0400 Subject: [PATCH] Use engine.connect(); don't use private _run_visitor method SQLAlchemy 1.3 has deprecated engine.contextual_connect() which will be removed in 1.4. Additionally, private methods like Engine._run_visitor will also be removed. Change-Id: I319785d7dd83ffe2c6e651a2494b073becc84684 --- migrate/changeset/databases/visitor.py | 2 +- migrate/changeset/schema.py | 22 ++++++++++++++++++---- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/migrate/changeset/databases/visitor.py b/migrate/changeset/databases/visitor.py index c70aa6b..7eb2301 100644 --- a/migrate/changeset/databases/visitor.py +++ b/migrate/changeset/databases/visitor.py @@ -73,7 +73,7 @@ def run_single_visitor(engine, visitorcallable, element, with support for migrate visitors. """ if connection is None: - conn = engine.contextual_connect(close_with_result=False) + conn = engine.connect() else: conn = connection visitor = visitorcallable(engine.dialect, conn) diff --git a/migrate/changeset/schema.py b/migrate/changeset/schema.py index a33be4b..35f9d7a 100644 --- a/migrate/changeset/schema.py +++ b/migrate/changeset/schema.py @@ -138,7 +138,7 @@ def alter_column(*p, **k): delta = ColumnDelta(*p, **k) visitorcallable = get_engine_visitor(engine, 'schemachanger') - engine._run_visitor(visitorcallable, delta) + _run_visitor(engine, visitorcallable, delta) return delta @@ -167,6 +167,20 @@ def _to_index(index, table=None, engine=None): return ret +def _run_visitor( + connectable, visitorcallable, element, connection=None, **kwargs +): + if connection is not None: + visitorcallable( + connection.dialect, connection, **kwargs).traverse_single(element) + else: + conn = connectable.connect() + try: + visitorcallable( + conn.dialect, conn, **kwargs).traverse_single(element) + finally: + conn.close() + # Python3: if we just use: # @@ -574,7 +588,7 @@ populated with defaults self.add_to_table(table) engine = self.table.bind visitorcallable = get_engine_visitor(engine, 'columngenerator') - engine._run_visitor(visitorcallable, self, connection, **kwargs) + _run_visitor(engine, visitorcallable, self, connection, **kwargs) # TODO: reuse existing connection if self.populate_default and self.default is not None: @@ -595,7 +609,7 @@ populated with defaults self.table = table engine = self.table.bind visitorcallable = get_engine_visitor(engine, 'columndropper') - engine._run_visitor(visitorcallable, self, connection, **kwargs) + _run_visitor(engine, visitorcallable, self, connection, **kwargs) self.remove_from_table(self.table, unset_table=False) self.table = None return self @@ -689,7 +703,7 @@ class ChangesetIndex(object): engine = self.table.bind self.new_name = name visitorcallable = get_engine_visitor(engine, 'schemachanger') - engine._run_visitor(visitorcallable, self, connection, **kwargs) + _run_visitor(engine, visitorcallable, self, connection, **kwargs) self.name = name