Интересно, можно ли вычислить значение столбца на основе других значений в той же таблице в SQLAlchemy.
Вот мой пример:
from uuid import uuid4
from datetime import datetime
from sqlalchemy import Column, String, DateTime, UniqueConstraint
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
def generate_uuid():
return str(uuid4())
class User(Base):
__tablename__ = 'users'
__table__args__ = (UniqueConstraint('username', 'email_address', 'phone'),)
user_id = Column(String(36), primary_key=True, unique=True, default=generate_uuid)
username = Column(String(15), nullable=False)
password = Column(String(25), nullable=False)
email_address = Column(String(255), nullable=False)
phone = Column(String(20), nullable=False)
hash = Column(String(128), nullable=False, unique=True)
created_on = Column(DateTime(), default=datetime.utcnow)
updated_on = Column(DateTime(), default=datetime.utcnow, onupdate=datetime.utcnow)
Чего я хочу добиться, так этоПересчитывать столбец hash
всякий раз, когда username
, email_address
или phone
изменяются (обновляются).
Возможно ли это с помощью sqlalchemy.event.listen_for
?Если да, можно ли его использовать, когда hash
зависит от нескольких столбцов?