是否可以使用Flask-SQLAlchemy连接从一个表中选择所有列并从另一个表中指定一些列?

时间:2017-06-07 20:22:21

标签: python sqlalchemy flask-sqlalchemy

我正在连接两个表,并希望从一个列中选择所有列,而从另一个列中选择一些列。我觉得我很接近,但它并没有完全恢复我想要的东西。我有一个广告表和一张优惠券表,在这里他们有一对一的关系。

我在db模型上调用了一个查询,如下所示:

result = Advertisement.query.join(Coupon, 
Advertisement.id==Coupon.id).filter(Advertisement.date==Coupon.date, 
Advertisement.id==12345).add_columns(Coupon.discount, 
Coupon.expiry_date)

我想要回来的是广告中的所有列和来自优惠券的两个列。我的理解是add_columns会这样做,但我只从优惠券中取回两个,而不是广告。如果我删除了add_columns,我会从广告中取回所有内容,但是没有来自优惠券。

我是否必须在类中声明表关系?我知道查询在sql中应该是什么样的,但我在这里有点亏。如果我提供的信息不够清楚,请告诉我,我可以尝试进一步详细说明,谢谢。

1 个答案:

答案 0 :(得分:0)

您可以按照以下方式执行此操作:

result = session.query(Advertisement, Coupon.discount, Coupon.expiry_date).filter(
   Advertisement.id==Coupon.id, 
   Advertisement.date==Coupon.date, 
   Advertisement.id==12345
)