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

在SQLAlchemy中如何获取Subscription关联的Customer对象?

解决方法

首先看你的SubscriptionModel定义,大概率是没给customer字段设置ORM关联关系,只是把它当成了外键字段来存ID。

1. 修正模型定义(推荐)

如果用的是SQLAlchemy这类ORM,你需要给SubscriptionModel添加relationship来关联CustomerModel:

from sqlalchemy import Column, Integer, ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class CustomerModel(Base):
    __tablename__ = "customers"
    id = Column(Integer, primary_key=True)
    # 可选:添加反向关联,方便从Customer查订阅
    subscriptions = relationship("SubscriptionModel", back_populates="customer")

class SubscriptionModel(Base):
    __tablename__ = "subscriptions"
    id = Column(Integer, primary_key=True)
    # 定义外键字段,存储Customer的ID
    customer_id = Column(Integer, ForeignKey("customers.id"))
    # 定义关联关系,这样subscription.customer就会返回Customer对象
    customer = relationship("CustomerModel", back_populates="subscriptions")

修改后再执行你的代码:

subscription = session.get(SubscriptionModel, 1)
print(subscription.customer)  # 现在会输出Customer对象而非ID

2. 临时手动查询(应急用)

如果暂时没法修改模型,也可以直接用拿到的ID查询Customer对象:

subscription = session.get(SubscriptionModel, 1)
customer = session.get(CustomerModel, subscription.customer)
print(customer)  # 这就是你需要的Customer对象

内容的提问来源于stack exchange,提问作者Fahim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 20:12:35