2

在此先感谢您的帮助。我必须将以下 SQL 语句转换为 SQL alchemy。我以前没有使用过 SQL Alchemy。

SQL:

SELECT User.id, User.nicknames
FROM users, breadcrumbs
WHERE user_id in my_friend_ids
AND user_id = bc.creator_id
AND bc.location_id = loc_id

my_friend_ids = select friend_id from friends 
                where user_id = requestor_id and status ='approved'

到目前为止我得到了什么:

my_friend_ids =  select([Friend.user_id]).select_from(Friend).\
                 where(and_(Friend.friend_id == user_id,
                 Friend.status == 'approved'))
4

1 回答 1

0

您可以考虑使用子查询。

my_friend_ids = db.session.query( Friend.id ).filter( and_(
    Friend.friend_id == Breadcrumb.creator_id,
    Friend.status == 'approved'
) ).subquery()

q = db.session.query( User, Breadcrumb ).filter( and_(
    User.id.in_( my_friend_ids ),
    Breadcrumb.location_id == loc_id
).all()

现在 q 将包含适合查询的用户和面包屑对象(可分别通过q[index].User和访问q[index].Breadcrumb)。虽然这不是很有效。您可能应该将其作为联接来执行。

于 2013-10-07T20:31:57.333 回答