gpt4 book ai didi

postgresql - 从 SQLAlchemy 中的查询返回 "computed"列

转载 作者:行者123 更新时间:2023-11-29 12:21:30 25 4
gpt4 key购买 nike

假设我有以下类(class):

class Basket(db.Model):
id = Column('id', Integer, primary_key=True)

class Fruit(db.Model):
id = Column('id', Integer, primary_key=True)
basket_id = Column(Integer, ForeignKey('basket.id'))

我想对 fruit 表进行查询,在其结果中返回一个名为 in_basket 的“计算”列,该列为 True如果水果的 basket_id 在篮子 ID [1, 2, 3] 列表中,否则为 False

在 SQLAlchemy 中有没有办法做到这一点?我正在使用 flask-sqlalchemy 和 Postgres 9。

谢谢。

最佳答案

使用 case 应该很简单表达式:

class Fruit(...):
...
def is_in_basket(self, busket_list):
return self.basket_id in busket_list

def get_fruits(basket_list):
from sqlalchemy.sql.expression import case
xpr = case([(Fruit.basket_id.in_(basket_list), True),], else_ = False).label("in_basket")
qry = session.query(Fruit, xpr)
fruits = []
for fruit, in_basket in qry:
fruit.in_basket = in_basket # assign value to a Fruit property (as per comment below)
fruits.append(fruit)
return fruits

fruits = get_fruits(my_basket_list)
for f in fruits:
print f, f.in_basket, f.is_in_basket(my_basket_list)

关于postgresql - 从 SQLAlchemy 中的查询返回 "computed"列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20062517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com