如何在SQLAlchemy中实现多条件关联多张表的查询?
使用SQLAlchemy实现指定SQL查询
假设你对应的模型类分别为Users(对应users表)、UserProfiles(对应user_profiles表)、Wallets(对应wallets表)、ProfileDetails(对应profile_details表),可以通过以下代码实现你给出的SQL查询逻辑:
from sqlalchemy import select # 构建查询语句 query_stmt = ( select( ProfileDetails.field_value.label("name"), Users.mobile, Wallets.balance, Users.created_at ) # 内连接user_profiles表 .join(UserProfiles, Users.id == UserProfiles.user_id) # 内连接wallets表 .join(Wallets, UserProfiles.id == Wallets.user_profile_id) # 左连接profile_details表 .outerjoin(ProfileDetails, Users.id == ProfileDetails.user_id) # 过滤条件 .filter( ProfileDetails.field_name == "name", Wallets.balance > 0 ) # 按用户ID降序排序 .order_by(Users.id.desc()) ) # 执行查询(需传入已创建的Session实例) # result = session.execute(query_stmt).all()
代码说明
select()方法中通过label()给field_value指定别名name,对应原SQL的d.field_value as name- 连续的
.join()对应原SQL的内连接操作,.outerjoin()对应左连接 .filter()中的条件与原SQL的WHERE子句完全匹配.order_by()实现按用户ID倒序排列的需求
内容的提问来源于stack exchange,提问作者user18578733
相关产品推荐
相关产品推荐

