使用sqlalchemy进行联合查询时,使用add_entity()方法将第二个表添加进来,查询的结果是一个由多个表的记录组成的元组列表。例如:
将OrderDetail表和Goods表连接,计算OrderDetail表的payment字段的值,需要Goods表的price字段与OrderDetail表的quantity字段。
这里payment是DECIMAL类型,quantity字段的值是整数,需要转换为Decimal类型再计算。
lines = session.query(OrderDetail).join(Goods, OrderDetail.goods_id == Goods.goods_id).add_entity(Goods).all()
for line in lines:
# line是两个表的每条记录组成的元祖。OrderDetail表的字段都在line[0]中,Goods表的字段都在line(1)中。
line[0].payment = line[1].price * Decimal(line[0].quantity)
print(line[0].payment)
session.commit()