Чтобы выделить несколько столбцов в некоторых таблицах, связанных

1

У меня есть следующие классы:

class Channel(rdb.Model):
    rdb.metadata(metadata)
    rdb.tablename("channels")

    id = Column("id", Integer, primary_key=True)
    title = Column("title", String(100))


    items = relationship("MediaItem", secondary=channel_items, order_by="MediaItem.titleView", backref="channels")

class MediaItem(rdb.Model):
    rdb.metadata(metadata)
    rdb.tablename("media_items")

    id = Column("id", Integer, primary_key=True)
    title = Column("title", String(100))

class User(rdb.Model):
    rdb.metadata(metadata)
    rdb.tablename("users")

    id = Column("id", Integer, primary_key=True)
    name = Column("name", String(50))

    channels = relationship("Channel", secondary=user_channels, order_by="Channel.titleView", backref="users")

MediaItem связан с каналом и каналом, связанным с пользователем.

если я хочу выбрать несколько столбцов из элементов и каналов, я бы сделал это:

session = Session()
result = session.query(Channel).join(Channel.items).values(Channel.title, Item.title)

Я получаю экземпляр класса Channel со своими элементами.

Моя проблема: я не знаю, как выбрать некоторые столбцы из User, Channel и Item. Как я могу сделать запрос, где, например, я могу выбрать свойство User.name и его каналы только с свойством Channel.title и элементами этих каналов только с свойством Item.title?

Спасибо заранее!

Теги:
sqlalchemy

1 ответ

0

Вы можете использовать построитель выражений sqlalchemy через четко определенные модели:

session.query(User.name, Channel.title, MediaItem.title)\
  .join(Channel.users).join(MediaItem.channels)

Вы можете изучить это в документах: http://www.sqlalchemy.org/docs/orm/query.html?highlight=join#sqlalchemy.orm.query.Query.join

Ещё вопросы

Сообщество Overcoder
Наверх
Меню