It works out, thank you! How could I just retrieve some columns from
both tables? For example, if I try to select some columns from Item
and Channel, I get "<class 'sqlalchemy.util.NamedTuple'>" when I'd
like to get a channel type with its items:

result = session.query(Channel.title,
Item.title).join('items').filter(Item.typeItem == "zeppelin/
channel").order_by(Channel.titleView).all()

I just need some values many times, I don't need to retrieve the whole
object.

Thanks in advance!


On Aug 3, 1:40 am, Kalium <raymond.ma...@gmail.com> wrote:
> On Aug 3, 8:43 am, Alvaro Reinoso <alvrein...@gmail.com> wrote:
>
>
>
> > Hello,
>
> > I have these classes where items (class Item) is related to channel
> > object. Channel can contain many items:
>
> > channel_items = Table(
> >         "channel_items",
> >         metadata,
> >         Column("channel_id", Integer,
> >             ForeignKey("channels.id")),
> >         Column("item_id", Integer,
> >             ForeignKey(Item.id))
> >     )
>
> > class Channel(rdb.Model):
> >     rdb.metadata(metadata)
> >     rdb.tablename("channels")
>
> >     id = Column("id", Integer, primary_key=True)
> >     title = Column("title", String(100))
>
> >     items = relation(Item, secondary=channel_items,
> > backref="channels")
>
> > class Item(rdb.Model):
> >     rdb.metadata(metadata)
> >     rdb.tablename("items")
>
> >     id = Column("id", Integer, primary_key=True)
> >     title = Column("title", String(100))
>
> > I know how to get all the columns using something like:
>
> > session = rdb.Session() channels =
> > session.query(Channel).order_by(Channel.title)
>
> > However, I'd like to select some columns from both tables with some
> > conditions in Item. For example, select all the channels where
> > item.type = 'jpg'. I'd like to get a channel object with items
> > attributes with that condition for example. How can I do that?
>
> > I've tried something like (no one worked out):
>
> > result = session.query(Channel).filter(Item.typeItem != 'zeppelin/
> > channel').all()
> > result = session.query(Channel, Item).filter(Item.typeItem !=
> > 'zeppelin/channel').all()
>
> > Thanks in advance!
>
> Try something like
>
> session.query(Channel).join('items').filter(Item.typeItem !=
> 'whatever').all()

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalch...@googlegroups.com.
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to