Python 从SQL语句到SQL炼金术的转换

Python 从SQL语句到SQL炼金术的转换,python,sql,orm,sqlalchemy,relational-database,Python,Sql,Orm,Sqlalchemy,Relational Database,提前感谢你的帮助。我必须将以下SQL语句转换为SQL alchemy。我以前从未使用过SQL炼金术 SQL: 到目前为止,我得到的是: my_friend_ids = select([Friend.user_id]).select_from(Friend).\ where(and_(Friend.friend_id == user_id, Friend.status == 'approved')) 您可以考虑使用子查询。 m

提前感谢你的帮助。我必须将以下SQL语句转换为SQL alchemy。我以前从未使用过SQL炼金术

SQL:

到目前为止,我得到的是:

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

您可以考虑使用子查询。

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将同时包含适合查询的user和breadcrumbs对象(可通过
q[index].user
q[index].Breadcrumb
访问)。但这不是很有效。您可能应该将其作为联接来执行。

问题是什么?如何将上述SQL语句转换为SQL Alchemy(类似于我为我的朋友ID所做的转换)?
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()