如何为SQLAlchemy模型创建临时计算列?

2024-04-19 14:46:33 发布

您现在位置:Python中文网/ 问答频道 /正文

比如说,我有一个SQLAlchemy模型:

class User(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    first_name = Column(String)
    last_name = Column(String)
    password = Column(String)

我有个问题:

session.query(User, (User.frist_name + ' ' + User.last_name).label('full_name')).all()

它会给我输出,比如[(User(...), 'John Smith'), ...]。你知道吗

我想要实现的是让SQLAlchemy将full_name附加到User()对象作为一次性查询的属性。这道菜的最佳配方是什么?你知道吗


Tags: name模型idbasestringsqlalchemycolumninteger
1条回答
网友
1楼 · 发布于 2024-04-19 14:46:33

您可以有一个触发器来为您的User模型的每个INSERT/UPDATE计算列full_name。尽管我建议使用^{}。你知道吗

所以在你的User模型中会有这样的东西。你知道吗

@hybrid_property
def full_name(self):
    # This is used for calculating the full name in python side.
    return '{0} {1}'.format(self.first_name, self.last_name)

@full_name.expression
def full_name(cls):
    # This is an expression that gets executed as SQL.
    return cls.first_name.concat(' ').concat(cls.last_name)

相关问题 更多 >