SQLAlchemy: select over multiple tables

Posted by ahojnnes on Stack Overflow See other posts from Stack Overflow or by ahojnnes
Published on 2010-06-17T11:16:53Z Indexed on 2010/06/17 11:23 UTC
Read the original article Hit count: 281

Filed under:
|
|
|

Hi,

I wanted to optimize my database query:

link_list = select(
    columns=[link_table.c.rating, link_table.c.url, link_table.c.donations_in],
    whereclause=and_(
        not_(link_table.c.id.in_(
            select(
                columns=[request_table.c.recipient],
                whereclause=request_table.c.donator==donator.id
            ).as_scalar()
        )),
        link_table.c.id!=donator.id,
    ),
    limit=20,
).execute().fetchall()

and tried to merge those two selects in one query:

link_list = select(
    columns=[link_table.c.rating, link_table.c.url, link_table.c.donations_in],
    whereclause=and_(
        link_table.c.active==True,
        link_table.c.id!=donator.id,
        request_table.c.donator==donator.id,
        link_table.c.id!=request_table.c.recipient,
    ),
    limit=20,
    order_by=[link_table.c.rating.desc()]
).execute().fetchall()

the database-schema looks like:

link_table = Table('links', metadata,
    Column('id', Integer, primary_key=True, autoincrement=True),
    Column('url', Unicode(250), index=True, unique=True),
    Column('registration_date', DateTime),
    Column('donations_in', Integer),
    Column('active', Boolean),
)
request_table = Table('requests', metadata,
    Column('id', Integer, primary_key=True, autoincrement=True),
    Column('recipient', Integer, ForeignKey('links.id')),
    Column('donator', Integer, ForeignKey('links.id')),
    Column('date', DateTime),
)

There are several links (donator) in request_table pointing to one link in the link_table. I want to have links from link_table, which are not yet "requested".

But this does not work. Is it actually possible, what I'm trying to do? If so, how would you do that?

Thank you very much in advance!

© Stack Overflow or respective owner

Related posts about python

Related posts about sql