提前感谢您的帮助。我必须将以下SQL语句转换为SQL炼金术。我之前没有使用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'))
答案 0 :(得分: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
分别访问)。但这不是很有效。你应该把它作为一个连接来代替。