SQLAlchemy: влияние двух объектов сеанса?

Будет ли следующее использование двух соединений DB из пула соединений из-за использования двух session вызовов?

users_from_contacts = db.session.query(User).join(Email, Email.user_id == User.id).join(Contacts, Contacts.email_id = Email.id)
users_from_past = db.session.query(User).join(Group, Group.user_id == User.id)

all_users = users_from_contacts.union_all(users_from_past).all()
1 ответ

нет, для одного, потому что Session выполняется в текущей транзакции с одним подключением, если для autocommit не установлено значение по умолчанию для True, а два, потому что есть только один SQL-запрос, испускаемый из вышеприведенного кода, когда метод .all() называется.

соответствующие документы:

http://docs.sqlalchemy.org/en/rel_0_9/orm/session.html#managing-transactions

http://docs.sqlalchemy.org/en/rel_0_9/orm/tutorial.html#returning-lists-and-scalars

licensed under cc by-sa 3.0 with attribution.