Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python sqlalchemy.exc.com尝试注册时烧瓶中出现错误_Python_Flask_Sqlalchemy - Fatal编程技术网

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
    重新初始化了数据库

  • 然后,我运行了以下命令:

    flask db迁移-m“数据库”

    烧瓶数据库升级


  • 然后,当我运行应用程序时,一切正常。

    根据我有限的经验,您当前使用的数据库与您之前创建的数据库不同。如果可以,出于学习目的,请删除数据库文件并重新运行

    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)