Flask SQLAlchemy:我可以在';它是一个声明性的_基类?

Flask SQLAlchemy:我可以在';它是一个声明性的_基类?,flask,sqlalchemy,flask-sqlalchemy,werkzeug,Flask,Sqlalchemy,Flask Sqlalchemy,Werkzeug,我有用户类: engine = create_engine('mysql://root:@localhost/academic', convert_unicode=True, echo=False) Base = declarative_base() Base.metadata.reflect(engine) class User(Base): __table__ = Base.metadata.tables['user'] @property def passwor

我有用户类:

engine = create_engine('mysql://root:@localhost/academic', convert_unicode=True, echo=False)
Base = declarative_base()
Base.metadata.reflect(engine)

class User(Base):
    __table__ = Base.metadata.tables['user']

    @property
    def password(self):
        raise AttributeError('password is not a readable attribute')
    
    @password.setter
    def password(self, password):
        self.password = generate_password_hash(password)
    
    def verify_password(self, password):
        return check_password_hash(self.password, password)

没有密码方法,代码可以正常工作,但一旦我取消对它们的注释,页面将继续加载,服务器将没有响应。

您在
@password.setter
中设置了
self.password
,导致无限递归。获取一个私有字段
\u密码
,并使其对应于数据写入和读取的位置:

类用户(基本):
__table_uz=Base.metadata.tables['user']
_密码=列(“密码”,字符串(256),可空=假)
@财产
def密码(自我):
raise AttributeError('密码不是可读属性')
@密码设置器
def密码(self,password):
self.\u password=生成\u密码\u散列(密码)
def验证_密码(自我、密码):
返回检查\u密码\u散列(self.\u密码,密码)