You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 11:50:46