Python sqlalchemy.exc.com尝试注册时烧瓶中出现错误
我正在学习米格尔·格林伯格的《烧瓶大教程》。但是,在完成注册、登录和用户配置文件的编码后,当我尝试对其进行测试时,我在尝试注册时遇到了一个错误:Python sqlalchemy.exc.com尝试注册时烧瓶中出现错误,python,flask,sqlalchemy,Python,Flask,Sqlalchemy,我正在学习米格尔·格林伯格的《烧瓶大教程》。但是,在完成注册、登录和用户配置文件的编码后,当我尝试对其进行测试时,我在尝试注册时遇到了一个错误: sqlalchemy.exc.OperationalError sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: user.about_me [SQL: SELECT user.id AS user_id, user.username AS user_
sqlalchemy.exc.OperationalError
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: user.about_me
[SQL: SELECT user.id AS user_id, user.username AS user_username, user.email AS user_email, user.password_hash AS user_password_hash, user.about_me AS user_about_me, user.last_seen AS user_last_seen
FROM user
WHERE user.username = ?
LIMIT ? OFFSET ?]
[parameters: ('samyak', 1, 0)]
(Background on this error at: http://sqlalche.me/e/13/e3q8)
这是我的register.html
模板:
{% extends "base.html" %}
{% block content %}
<h1>Register</h1>
<form action="" method="post">
{{ form.hidden_tag() }}
<p>
{{ form.username.label }}<br>
{{ form.username(size=32) }}<br>
{% for error in form.username.errors %}
<span style="color: red;">[{{ error }}]</span>
{% endfor %}
</p>
<p>
{{ form.email.label }}<br>
{{ form.email(size=64) }}<br>
{% for error in form.email.errors %}
<span style="color: red;">[{{ error }}]</span>
{% endfor %}
</p>
<p>
{{ form.password.label }}<br>
{{ form.password(size=32) }}<br>
{% for error in form.password.errors %}
<span style="color: red;">[{{ error }}]</span>
{% endfor %}
</p>
<p>
{{ form.password2.label }}<br>
{{ form.password2(size=32) }}<br>
{% for error in form.password2.errors %}
<span style="color: red;">[{{ error }}]</span>
{% endfor %}
</p>
<p>{{ form.submit() }}</p>
</form>
{% endblock %}
而且,因为这是一个sqlalchemy
错误,这里是我的User
模型:
class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), index=True, unique=True)
email = db.Column(db.String(120), index=True, unique=True)
password_hash = db.Column(db.String(128))
posts = db.relationship('Post', backref='author', lazy='dynamic')
about_me = db.Column(db.String(140))
last_seen = db.Column(db.DateTime, default=datetime.utcnow)
def __repr__(self):
return '<User {}>'.format(self.username)
def set_password(self, password):
self.password_hash = generate_password_hash(password)
def check_password(self, password):
return check_password_hash(self.password_hash, password)
def avatar(self, size):
digest = md5(self.email.lower().encode('utf-8')).hexdigest()
return 'https://www.gravatar.com/avatar/{}?d=identicon&s={}'.format(
digest, size)
类用户(UserMixin,db.Model):
id=db.Column(db.Integer,主键=True)
username=db.Column(db.String(64),index=True,unique=True)
email=db.Column(db.String(120),index=True,unique=True)
密码\u hash=db.Column(db.String(128))
posts=db.relationship('Post',backref='author',lazy='dynamic')
about_me=db.Column(db.String(140))
last_seen=db.Column(db.DateTime,默认值=DateTime.utcnow)
定义报告(自我):
返回“”。格式(self.username)
def设置_密码(自我、密码):
self.password\u hash=生成密码\u hash(密码)
def检查_密码(自我、密码):
返回检查\u密码\u散列(self.password\u散列,password)
def头像(自身,大小):
digest=md5(self.email.lower().encode('utf-8')).hexdigest()
返回'https://www.gravatar.com/avatar/{}?d=identicon&s={}.格式(
摘要(尺寸)
我刚刚开始学习。有人能帮我吗
编辑:
我解决了这个问题
flask db init
重新初始化了数据库
然后,当我运行应用程序时,一切正常。根据我有限的经验,您当前使用的数据库与您之前创建的数据库不同。如果可以,出于学习目的,请删除数据库文件并重新运行
class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), index=True, unique=True)
email = db.Column(db.String(120), index=True, unique=True)
password_hash = db.Column(db.String(128))
posts = db.relationship('Post', backref='author', lazy='dynamic')
about_me = db.Column(db.String(140))
last_seen = db.Column(db.DateTime, default=datetime.utcnow)
def __repr__(self):
return '<User {}>'.format(self.username)
def set_password(self, password):
self.password_hash = generate_password_hash(password)
def check_password(self, password):
return check_password_hash(self.password_hash, password)
def avatar(self, size):
digest = md5(self.email.lower().encode('utf-8')).hexdigest()
return 'https://www.gravatar.com/avatar/{}?d=identicon&s={}'.format(
digest, size)