Доступ к параметрам загрузки запроса SQLAlchemy - PullRequest
0 голосов
/ 14 февраля 2019

Я пишу простой сериализатор для экземпляров SQLAlchemy в словари Python и пытаюсь сериализовать только те объекты, которые были загружены с нетерпением, но исключая объекты, которые не были.Более конкретно, я пытаюсь проверить параметры загрузки отношения объекта SQLAlchemy, полученного из запроса с пользовательскими параметрами загрузки.Например,

class Item(db.Model):
    ...
    field = db.relationship('Field', lazy='raise')

item = session.query(Item).options([joinedload(Item.field)]).first()

Теперь я ожидаю, что отношение Item.field будет иметь lazy = 'join', потому что я переопределяю параметры загрузки во время запроса, но когда я проверяю item._sa_instance_state.mapper.relationships.get('field').lazy, это все еще'raise'.

Другими словами, кажется, что параметры загрузки запроса SQLAlchemy преобразуются в SQL, но это никак не влияет на параметры загрузки состояния экземпляра.

  1. Я рассмотрелиспользование item._sa_instance_state.unloaded в качестве индикатора того, было ли что-то присоединено или нет.Если он был загружен, поле не будет в item._sa_instance_state.unloaded.Это правильно?
  2. Если бы что-то было noload, raiseload или select, разве они никогда не были бы в item._sa_instance_state.unloaded до доступа?

Может кто-топожалуйста, сообщите мне, если есть лучший способ определить параметры загрузки экземпляра после запроса, пожалуйста?

...