db: Don't rely on branched connections
We were previously calling 'connect()' on the 'connectable' object in 'run_migrations_online', regardless of whether it was an 'Engine' or 'Connection' object. This worked because, as noted in an inline comment, "when connectable is already a Connection object, calling 'connect()' gives us a *branched connection*." This is no longer the case. From the SQLAlchemy docs [1]: The Connection object does not support "branching", which was a pattern by which a sub "connection" would be used that refers to this connection as a parent. Update our code to reflect this change, using the newly updated example from the SQLAlchemy cookbook doc [2] as inspiration. [1] https://docs.sqlalchemy.org/en/14/core/future.html#sqlalchemy.future.Connection [2] https://alembic.sqlalchemy.org/en/latest/cookbook.html#connection-sharing Closes-Bug: #2061375 Co-Authored-By: Stephen Finucane <stephenfin@redhat.com> Change-Id: I5617dc7e6e97e4ba5aad2f5d8be40b2241b9cf4c
This commit is contained in:
parent
db020073ec
commit
d683ddb86e
@ -68,7 +68,12 @@ def run_migrations_online():
|
|||||||
target_metadata=target_metadata)
|
target_metadata=target_metadata)
|
||||||
with context.begin_transaction():
|
with context.begin_transaction():
|
||||||
context.run_migrations()
|
context.run_migrations()
|
||||||
|
else:
|
||||||
|
context.configure(
|
||||||
|
connection=connectable,
|
||||||
|
target_metadata=target_metadata)
|
||||||
|
with context.begin_transaction():
|
||||||
|
context.run_migrations()
|
||||||
|
|
||||||
if context.is_offline_mode():
|
if context.is_offline_mode():
|
||||||
run_migrations_offline()
|
run_migrations_offline()
|
||||||
|
Loading…
Reference in New Issue
Block a user