Я пытаюсь инициализировать SQLAlchemy с существующим подключением к БД, но мне бы хотелось, чтобы он полностью прекратил управлять им (открытие, закрытие, откат и т. Д.).Это потому, что я использую его вместе с другим ORM (django), а SQLAlchemy на самом деле является лишь способом выполнения более сложных запросов.Он будет использоваться только для чтения, и я просто хочу, чтобы он взял соединение, использовал его и оставил как есть.
Что я пробовал до сих пор:
from sqlalchemy.pool import NullPool
from sqlalchemy import create_engine
from django.db import connection
class DummyNullPool(NullPool):
def _do_return_conn(self, conn):
# avoid closing the connection as it belongs to django
# orm, sql alchemy is only a tool to read
pass
def get_engine(dummy=True):
kwargs = {}
if dummy:
kwargs['poolclass'] = DummyNullPool
kwargs['creator'] = lambda: connection.connection
return create_engine(conn_string, **kwargs)
Это почти работает,но он зависает (хотя и не всегда) на
def _create_connection(self):
return _ConnectionRecord(self, False)
Так что я предполагаю, что должно быть какое-то условие гонки.
Причина, по которой я хочу повторно использовать то же соединение, заключается в том, что янравится иметь доступ к записям, созданным внутри текущей транзакции.