簡體   English   中英

SQLAlchemy-如何在提交列之前對其進行處理?

[英]SQLAlchemy - How to process a column before it is committed?

我有一個簡單的User類http://docs.sqlalchemy.org/en/latest/orm/tutorial.html

Base = declarative_base()

class User(Base):
    __tablename__ = 'user'
    id = Column(Integer, primary_key=True)
    name = Column(Text)
    password = Column(Text) # should be a hash

我如何能夠moidyf我的User類或偵聽一個事件,以便我可以在提交密碼之前將其更改為加鹽版本? 與其每次都執行user.name = salted(username) ,我不希望它以某種方式內置到User類中。

user = User(name='test', password='hashme')
Session = sessionmaker(bind=engine) # get a factory
mySession = Session()
mySession.add(user)
mySession.commit()
Base = declarative_base()

class User(Base):
    __tablename__ = 'user'
    id = Column(Integer, primary_key=True)
    name = Column(Text)
    password = Column(Text) # should be a hash

    @staticmethod
    def _hash_password(mapper, connection, target):
        user = target
        user.password = hash_method(user.password)


listen(User, 'before_insert', User._hash_password)
listen(User, 'before_update', User._hash_password)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM