【发布时间】:2019-04-22 11:07:44
【问题描述】:
所以,在添加几列之前,我有用户名、密码和电子邮件,它工作正常。但是当我尝试添加更多信息时,例如年龄、性别、电话和地址,我收到了这个错误:
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: user [SQL: 'SELECT user.id AS user_id, user.username AS user_username, user.email AS user_email, user.password AS user_password, user.age AS user_age, user.gender AS user_gender, user.phone AS user_phone, user.address AS user_address \nFROM user \nWHERE user.username = ?\n LIMIT ? OFFSET ?'] [parameters: ('agam-kashyap', 1, 0)] (Background on this error at: http://sqlalche.me/e/e3q8)
错误似乎在以下几行中:
@app.route("/register",methods = ['GET','POST'])
def register():
form = RegistrationForm()
if form.validate_on_submit():
user = User(username=form.username.data, email = form.email.data, password = form.password.data, age = form.age.data, gender = form.gender.data, phone = form.phone.data, address = form.address.data)
db.create_all()
db.session.add(user)
db.session.commit()
return redirect(url_for('login'))
return render_template('register.html', title= 'Register' , form = form)
另外,这是我的用户类:
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(20), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
password = db.Column(db.String(60), nullable=False)
age = db.Column(db.String(3), nullable=False)
gender = db.Column(db.String(6), nullable=False)
phone = db.Column(db.String(10), nullable=False)
address = db.Column(db.String(200), nullable=False)
我该如何解决这个问题?
【问题讨论】:
-
当您说“添加的东西”时,您的意思是向
User模型添加了字段吗?你有没有做任何事情来迁移底层数据库以便包含相应的新列? -
@DaveW.Smith 我是烧瓶和 sql 的新手。所以,是的,我确实向 User 模型添加了字段,但我并没有完全得到下一个语句。 “迁移”到数据库是什么意思?
标签: flask sqlalchemy flask-sqlalchemy flask-wtforms