Использование «aliased» в ORM SQLAlchemy

Из учебника ORM SQLAlchemy :

Вы можете управлять именами, используя конструкцию label () для скалярных атрибутов и псевдонимов для конструкций класса:

>>> from sqlalchemy.orm import aliased >>> user_alias = aliased(User, name='user_alias') >>> for row in session.query(user_alias, user_alias.name.label('name_label')).all(): ... print row.user_alias, row.name_label 

Это, кажется, намного более типизированное и намного менее читаемое, чем простые дескрипторы, основанные на классе:

 >>> for row in session.query(User, User.name).all(): ... print row.User, row.name 

Но он должен существовать по какой-то причине. Как его использовать? Какие хорошие примеры использования?

One Solution collect form web for “Использование «aliased» в ORM SQLAlchemy”

aliased() или alias() используются всякий раз, когда вам нужно использовать конструкцию SELECT ... FROM my_table my_table_alias ... в SQL, в основном при использовании одной и той же таблицы более одного раза в запросе (самостоятельно присоединяется, с или без дополнительных таблицы). В некоторых случаях вам также нужно подзапросы псевдонимов.

В документации есть пример: http://www.sqlalchemy.org/docs/orm/query.html?highlight=aliased#sqlalchemy.orm.util.AliasedClass

  • SQLAlchemy: сканировать огромные таблицы с помощью ORM?
  • SQLAlchemy удаление многих-ко-многим сирот
  • Использование cdecimal в SQLAlchemy
  • Как избежать дублирования в таблице взаимосвязей «многие ко многим» в SQLAlchemy - python?
  • SQLAlchemy.declarative и отложенная загрузка столбца
  • SQLALchemy dynamic filter_by
  • Вопрос о подключении соединения Mysql: стоит ли это?
  • Flask-SQLAlchemy объединяются в 3 модели и конструкцию таблицы
  • Python - лучший язык программирования в мире.