在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
相关产品推荐
相关产品推荐

