加载外部连接会导致sqlalchemy ORM

加载外部连接会导致sqlalchemy ORM,sqlalchemy,Sqlalchemy,我需要在此结构中加载结果: { 地址:[,…] 出生日期:“YYYY-MM-DD” 创建于:“2020-09-29T15:27:30.789498” 禁用:false 电子邮件:“sami@email.me" 已确认的电子邮件:false 性别:“m” 身份证号码:11 项目:[,…] 移动电话:80080 移动电话确认:正确 第一个名字:“萨米” 最后一名:“xx” 通讯:真的 订单:[,…] 首选语言:“ar” 更新地址:“2020-11-13T15:21:57.301272” } 但是我

我需要在此结构中加载结果:

{
地址:[,…]
出生日期:“YYYY-MM-DD”
创建于:“2020-09-29T15:27:30.789498”
禁用:false
电子邮件:“sami@email.me"
已确认的电子邮件:false
性别:“m”
身份证号码:11
项目:[,…]
移动电话:80080
移动电话确认:正确
第一个名字:“萨米”
最后一名:“xx”
通讯:真的
订单:[,…]
首选语言:“ar”
更新地址:“2020-11-13T15:21:57.301272”
}
但是我得到的是空的
订单
项目
。它们的列未加载

类用户(基本):
__tablename_=“用户”
id=列(整数,主键=True,索引=True)
name\u first=Column(字符串,null=False)
name\u last=Column(字符串,null=True)
mobile=Column(整数,unique=True,index=True,nullable=False)
mobile_otp=Column(整数,可为null=False)
mobile_confirm=列(布尔值,默认值=False)
email=列(字符串,unique=True,index=True,nullable=True)
电子邮件确认=列(布尔值,默认值=False)
password=Column(字符串,null=False)
密码\u重置\u otp=列(整数,可空=真)
性别=列(字符串,可空=False)
出生日期=列(日期时间,可空=假)
首选_语言=列(字符串,可空=False)
时事通讯=列(布尔值,默认值=False)
禁用=列(布尔值,默认值=False)
在=列处创建(DateTime,nullable=False)
更新的_at=列(DateTime,nullable=False)
地址=关系('addresses',uselist=True,back_populates=“user”,lazy='noload')
订单=关系('orders',uselist=True,backref=backref(“用户”),lazy='noload')
items=关系('items',uselist=True,backref=backref(“用户”),lazy='noload')
staff=关系(“staff”,uselist=False,back\u populates=“user”,lazy='raise')
课堂秩序(基本):
__tablename=“订单”
id=列(整数,主键=True,索引=True)
user\u id=列(整数,ForeignKey('users.id'))
address\u id=列(整数,ForeignKey('addresses.id'))
交货时间=列(日期时间)
staff_id=Column(整数,ForeignKey('staff.id'),nullable=True)
store_id=Column(整数,ForeignKey('stores.id'),nullable=True)
创建时间=列(日期时间)
更新的_at=列(日期时间)
活动=列(布尔值,默认值=真)
items=关系(“items”,uselist=True,back\u populates=“order”,lazy='raise')
生命周期=关系(“订单生命周期”)
类别项目(基本):
__tablename_u=“项目”
id=列(整数,主键=True,索引=True)
user\u id=列(整数,ForeignKey('users.id'))
order_id=Column(整数,ForeignKey('orders.id'),null=True)
size\u id=列(整数,ForeignKey('size.id'))
价格=列(浮动,可空=真)
数量=列(整数)
订单=关系(“订单”,uselist=False,back\u populates=“items”,lazy='raise')
大小=关系(“大小”,uselist=False,lazy='raise')
SQLAlchemy查询:

def get_user_by_mobile(db:Session,mobile:str,items:bool,orders:bool):
orders=db.query(tables.orders).filter(tables.orders.active==True).子查询(“订单”)
items=db.query(tables.items).选项(joinedload(tables.items.size).joinedload(tables.size.product)).filter(tables.items.order_id==None).子查询(“items”)
query=db.query(tables.Users).outerjoin(items,tables.Users.id==items.c.user\u id).outerjoin(orders,tables.Users.id==orders.c.user\u id)
query=query.options(joinedload(tables.Users.addresses)).filter(tables.Users.mobile==mobile)
返回query.first()
如何在顶部的json结构示例中将子查询结果列表作为属性加载?类似于加载地址的方式

子查询的列名不包括在查询语句中:

选择users.id作为users\u id,
users.name\u first作为users\u name\u first,
users.name\u last作为users\u name\u last,
users.mobile作为users\u mobile,
users.mobile\u otp作为users\u mobile\u otp,
users.mobile\u已确认为users\u mobile\u已确认,
users.email作为users\u电子邮件,
users.email\u已确认为users\u email\u已确认,
users.password作为users\u密码,
users.password\u reset\u otp作为users\u password\u reset\u otp,
users.gender作为users\u gender,
users.birth\u date作为users\u birth\u date,
users.preferred_语言作为users_preferred_语言,
users.newslette作为用户通讯,
users.disabled作为users\u disabled,
users.created_at作为users_created_at,
users.updated_at作为users_updated_at,
地址\u 1.id作为地址\u 1\u id,
地址\u 1.标签为地址\u 1\u标签,
St_asewkb(地址坐标)作为地址坐标,
地址1.楼号作为地址1楼号,
地址\u 1.平面\u编号作为地址\u 1 \u平面\u编号,
地址\u 1.禁用为地址\u 1\u禁用,
地址\u 1.created\u at作为地址\u 1\u created\u at,
添加