使用SQLAlchemy返回父子JSON序列化对象 - 惰性加载问题
我正在尝试使用一个通用查询来选择一个父类及其所有子类。
这个查询看起来是这样的:
def get_data(session: Session, table, data_filter):
try:
data = session.query(table).filter_by(**data_filter).first()
return data
except SQLAlchemyError as e:
raise e
我不确定问题是不是出在懒加载上,但每次我运行服务器时,只能得到关于父类的数据。这里有一个我使用的模型示例:
class User(Base):
__tablename__ = "user_account"
email: Mapped[str] = mapped_column(String(60), primary_key=True)
username: Mapped[str] = mapped_column(String(30))
password: Mapped[str] = mapped_column(BYTEA(60))
firstname: Mapped[str] = mapped_column(String(30))
lastname: Mapped[str] = mapped_column(String(30))
domainName = relationship("DomainName", cascade="all, delete-orphan",
backref="user_account", lazy=False)
class DomainName(Base):
__tablename__ = "user_domain"
domain_id: Mapped[int] = mapped_column(primary_key=True)
user_id: Mapped[int] = mapped_column(ForeignKey("user_account.email"))
domain_name: Mapped[str] = mapped_column(String(30))
我的服务只是返回 get_data 的调用。如果我使用调试工具,我可以看到所有的数据(在用户对象中,“domainName”这个子对象即使没有与IDE交互也被填充了)。但是当返回到Postman时,我只得到了用户字段(没有DomainName):
{
"email": "r@tester.com",
"username": "r",
"password": "",
"firstname": "r",
"lastname": "o"
}
1 个回答
0
我需要更新查询功能,而不是把它做成一个通用的函数:
def get_user(session: Session, data_filter):
return session.query(User).options(joinedload(User.domainName)).filter_by(**data_filter).first()