Может ли SQLAlchemy с нетерпением / объединенными нагрузками быть подавленными после настройки?

У меня есть случай, когда большую часть времени отношения между объектами были такими, что предварительная настройка надежной (объединенной) нагрузки на отношение имела смысл. Однако теперь у меня есть ситуация, когда я действительно не хочу, чтобы была загружена энергичная нагрузка.

Должен ли я удалить объединенную нагрузку из отношения и изменить все релевантные запросы для соединения в месте запроса (ick) или есть способ подавить нетерпеливый груз в запросе после его настройки?

Ниже приведен пример, в котором активная загрузка была настроена в отношении User-> Address. Можно ли сконфигурировать запрос в конце программы, чтобы НЕ загружать загрузку?

import sqlalchemy as sa from sqlalchemy.ext.declarative import declarative_base import sqlalchemy.orm as orm ##Set up SQLAlchemy for declarative use with Sqlite... engine = sa.create_engine("sqlite://", echo = True) DeclarativeBase = declarative_base() Session = orm.sessionmaker(bind = engine) class User(DeclarativeBase): __tablename__ = "users" id = sa.Column(sa.Integer, primary_key = True, autoincrement = True) name = sa.Column(sa.String, unique = True) addresses = orm.relationship("Address", lazy = "joined", #EAGER LOAD CONFIG IS HERE ) def __init__(self, Name): self.name = Name class Address(DeclarativeBase): __tablename__ = "addresses" id = sa.Column(sa.Integer, primary_key = True, autoincrement = True) address = sa.Column(sa.String, unique = True) FK_user = sa.Column(sa.Integer, sa.ForeignKey("users.id")) def __init__(self, Email): self.address = Email ##Generate data tables... DeclarativeBase.metadata.create_all(engine) ##Add some data... joe = User("Joe") joe.addresses = [Address("joe@example.com"), Address("joeyjojojs@example.net")] s1 = Session() s1.add(joe) s1.commit() ## Access the data for the demo... s2 = Session() #How to suppress the eager load (auto-join) in the query below? joe = s2.query(User).filter_by(name = "Joe").one() # <-- HERE? for addr in joe.addresses: print addr.address 

One Solution collect form web for “Может ли SQLAlchemy с нетерпением / объединенными нагрузками быть подавленными после настройки?”

Насколько я помню, вы можете переопределить рвение свойств по запросу по запросу. Будет ли это работать?

 from sqlalchemy.orm import lazyload joe = (s2.query(User) .options(lazyload('addresses')) .filter_by(name = "Joe").one()) for addr in joe.addresses: print addr.address 

См. Документы.

  • TypeError: требуется целое число, SQLAlchemy + Flask
  • Вставка реляционных данных в SQL Alchemy с запросами API в Python
  • Запрос гибридного свойства в SQLAlchemy
  • Sqlalchemy присоединиться к одному из многих отношений?
  • sqlalchemy, превращая список идентификаторов в список объектов
  • Flask SQLAlchemy db.create_all () не создает базу данных
  • Классы SQLAlchemy для файлов
  • Запрос многих ко многим в SQLAlchemy
  • Как избежать дублирования в таблице взаимосвязей «многие ко многим» в SQLAlchemy - python?
  • Непрерывные типы Python в вызовах функций
  • Как обернуть столбец в операции CAST
  • Python - лучший язык программирования в мире.