提问者:小点点

错误时使用烧瓶sqlalchemy.exc.完整性错误:(sqlite3.唯一约束失败


我对这个很陌生,我只是在试用烧瓶,我似乎无法用sqlalchemy解决这个问题

sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint 
failed: Login Info.username [SQL: 'INSERT INTO "Login Info" (username, 
password) VALUES (?, ?)'] [parameters: ('audyappy', 'secret')] (Background on 
this error at: http://sqlalche.me/e/gkpj)

从project.py:

@app.route('/register', methods=['GET',"POST"])
def register():
    if request.method == "POST":
        newUser = Login_Info(username=request.form['username'], password=request.form['password'])
        session.add(newUser)
        flash('You have registered successfully')
        session.commit()
        return redirect(url_for('login'))
    else:
        return render_template('register.html')

这是从数据库_设置。py:

class Login_Info(Base):
    __tablename__ = 'Login Info'
    id = Column(Integer, primary_key=True)
    username = Column(String, nullable=False, unique=True)
    password = Column(String, nullable=False)

完全回溯:

我似乎找不到这个问题,所以如果你能帮助我,那就太好了。谢谢


共2个答案

匿名用户

您在试图插入数据的表的username列上有一个unicity约束:username=column(String,nullable=False,unique=True)

您试图插入的用户名值已经在该表中。尝试删除有问题的记录并重新运行插入或使用不同的值运行插入。

匿名用户

从您的输出来看,这似乎是导致问题的原因。

“D:\Audric\Work\firstcode\python\FCASIS\AC403(FLASK-SHARED)\deploy-experimental\project.py”,第80行,在注册会话中。提交()文件

会议结束了。commit()可能无法将数据提交到数据库。我认为您没有正确设置数据库。由于您使用的是Flask,我建议您使用Flask SQLAlchemy,这使得在Flask应用程序上使用SQLAlchemy更加容易。

看看这个关于这个主题的很棒的教程。https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-iv-database .

希望这有帮助。