ChaimKut
ChaimKut

Reputation: 2809

Updating derived values in SQLAlchemy

Usual sqlalchemy usage:

my_prop = Column("my_prop", Text)

I would like different semantics. Let's say an object has a set of fields (propA, propB, propC). I would like to maintain a database column which is derived from these fields (let's say, propA + propB + propC). I would like the column to be updated whenever any one of these set of fields is updated. Thank you.

Upvotes: 0

Views: 43

Answers (1)

davidism
davidism

Reputation: 127180

Hybrid properties provide the functionality you are looking for. They allow you to write python properties that are usable in queries.

Here's how you might start if you wanted to have a name column and provide access to first and last name properties.

@hybrid_property
def first_name(self):
    # get the first name from the name column

@first_name.setter
def first_name(self, value):
    # update the name column with the first name replaced

@first_name.expression
def first_name(cls):
    # return a sql expression that extracts the first name from the name column
    # this is appropriate to be used in queries

Upvotes: 1

Related Questions