我对此很陌生,我只是尝试使用烧瓶,但似乎无法使用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')
这是来自database_setup.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)
完整追溯:
回溯(最近通话最近):文件 “ C:\ Users \ audri \ AppData \ Roaming \ Python \ Python37 \ site-packages \ flask \ app.py”, 第2309行,在致电 返回self.wsgi_app(环境,start_response)文件“ C:\ Users \ audri \ AppData \ Roaming \ Python \ Python37 \ site-packages \ flask \ app.py”, wsgi_app中的第2295行 响应= self.handle_exception(e)文件“ C:\ Users \ audri \ AppData \ Roaming \ Python \ Python37 \ site-packages \ flask \ app.py”, 第1741行,在handle_exception中 重新提升(exc_type,exc_value,tb)文件“ C:\ Users \ audri \ AppData \ Roaming \ Python \ Python37 \ site-packages \ flask_compat.py”, 第35行,加价 提高价值文件“ C:\ Users \ audri \ AppData \ Roaming \ Python \ Python37 \ site-packages \ flask \ app.py”, wsgi_app中的2292行 响应= self.full_dispatch_request()文件“ C:\ Users \ audri \ AppData \ Roaming \ Python \ Python37 \ site-packages \ flask \ app.py”, 第1815行,在full_dispatch_request中 rv = self.handle_user_exception(e)文件“ C:\ Users \ audri \ AppData \ Roaming \ Python \ Python37 \ site-packages \ flask \ app.py”, 第1718行,在handle_user_exception中 重新提升(exc_type,exc_value,tb)文件“ C:\ Users \ audri \ AppData \ Roaming \ Python \ Python37 \ site-packages \ flask_compat.py”, 第35行,加价 提高价值文件“ C:\ Users \ audri \ AppData \ Roaming \ Python \ Python37 \ site-packages \ flask \ app.py”, 第1813行,在full_dispatch_request中 rv = self.dispatch_request()文件“ C:\ Users \ audri \ AppData \ Roaming \ Python \ Python37 \ site-packages \ flask \ app.py”, 1799行,在dispatch_request中 返回self.view_functionsrule.endpoint文件“ D:\ Audric \ Work \ firstcode \ python \ FCASIS \ AC403(FLASK-SHARED)\ deploy -experimental \ project.py“,第80行,在寄存器中 session.commit()文件“ C:\ Users \ audri \ AppData \ Roaming \ Python \ Python37 \ site-packages \ sqlalchemy \ orm \ scoping.py”, 第153行,在 返回getattr(self.registry(),name)(* args,** kwargs)文件“ C:\ Users \ audri \ AppData \ Roaming \ Python \ Python37 \ site-packages \ sqlalchemy \ orm \ session.py”, 第943行,正在提交 self.transaction.commit()文件“ C:\ Users \ audri \ AppData \ Roaming \ Python \ Python37 \ site-packages \ sqlalchemy \ orm \ session.py”, 第467行,正在提交 self._prepare_impl()文件“ C:\ Users \ audri \ AppData \ Roaming \ Python \ Python37 \ site-packages \ sqlalchemy \ orm \ session.py”, _prepare_impl中的第447行 self.session.flush()文件“ C:\ Users \ audri \ AppData \ Roaming \ Python \ Python37 \ site-packages \ sqlalchemy \ orm \ session.py”, 2254行,齐平 self._flush(objects)文件“ C:\ Users \ audri \ AppData \ Roaming \ Python \ Python37 \ site-packages \ sqlalchemy \ orm \ session.py”, _flush中的第2380行 transaction.rollback(_capture_exception = True)文件“ C:\ Users \ audri \ AppData \ Roaming \ Python \ Python37 \ site-packages \ sqlalchemy \ util \ langhelpers.py”, 第66行,退出 compat.reraise(exc_type,exc_value,exc_tb)文件“ C:\ Users \ audri \ AppData \ Roaming \ Python \ Python37 \ site-packages \ sqlalchemy \ util \ compat.py”, 第249行,加价 提高价值文件“ C:\ Users \ audri \ AppData \ Roaming \ Python \ Python37 \ site-packages \ sqlalchemy \ orm \ session.py”, _flush中的第2344行 flush_context.execute()文件“ C:\ Users \ audri \ AppData \ Roaming \ Python \ Python37 \ site-packages \ sqlalchemy \ orm \ unitofwork.py”, 第391行,在执行中 rec.execute(self)文件“ C:\ Users \ audri \ AppData \ Roaming \ Python \ Python37 \ site-packages \ sqlalchemy \ orm \ unitofwork.py”, 执行中的第556行 uow文件“ C:\ Users \ audri \ AppData \ Roaming \ Python \ Python37 \ site-packages \ sqlalchemy \ orm \ persistence.py”, 第181行,在save_obj中 映射器,表,插入)文件“ C:\ Users \ audri \ AppData \ Roaming \ Python \ Python37 \ site-packages \ sqlalchemy \ orm \ persistence.py”, _emit_insert_statements中的第866行 执行(语句,参数)文件“ C:\ Users \ audri \ AppData \ Roaming \ Python \ Python37 \ site-packages \ sqlalchemy \ engine \ base.py”, 第948行,执行 返回meth(self,multiparams,params)文件“ C:\ Users \ audri \ AppData \ Roaming \ Python \ Python37 \ site-packages \ sqlalchemy \ sql \ elements.py”, _execute_on_connection中的第269行 返回连接。_execute_clauseelement(自己,多参数,参数)文件 “ C:\ Users \ audri \ AppData \ Roaming \ Python \ Python37 \ site-packages \ sqlalchemy \ engine \ base.py”, 第1060行,在_execute_clauseelement中 编译后的SQL,stilled_params文件“ C:\ Users \ audri \ AppData \ Roaming \ Python \ Python37 \ site-packages \ sqlalchemy \ engine \ base.py”, _execute_context中的第1200行 上下文)文件“ C:\ Users \ audri \ AppData \ Roaming \ Python \ Python37 \ site-packages \ sqlalchemy \ engine \ base.py”, _handle_dbapi_exception中的第1413行 exc_info文件“ C:\ Users \ audri \ AppData \ Roaming \ Python \ Python37 \ site-packages \ sqlalchemy \ util \ compat.py”, 第265行,在raise_from_cause中 重新引发(类型(异常),异常,tb = exc_tb,原因=原因)文件“ C:\ Users \ audri \ AppData \ Roaming \ Python \ Python37 \ site-packages \ sqlalchemy \ util \ compat.py”, 第248行,加价 提高价值。with_traceback(tb)文件“ C:\ Users \ audri \ AppData \ Roaming \ Python \ Python37 \ site-packages \ sqlalchemy \ engine \ base.py”, 第1193行,在_execute_context中 上下文)文件“ C:\ Users \ audri \ AppData \ Roaming \ Python \ Python37 \ site-packages \ sqlalchemy \ engine \ default.py”, do_execute中的509行 cursor.execute(语句,参数)sqlalchemy.exc.IntegrityError:(sqlite3.IntegrityError)唯一 约束失败:登录信息。用户名[SQL:'INSERT INTO“登录信息” (用户名,密码)VALUES(?,?)'] [参数:('audyappy', '秘密']](此错误的背景位于:http://sqlalche.me/e/gkpj)
我似乎找不到问题,因此如果您能帮助我,那将是很好的。谢谢!
答案 0 :(得分:0)
您要插入数据的表的用户名列具有唯一性约束:username = Column(String, nullable=False, unique=True)
您要插入的用户名值已在该表中。尝试删除有问题的记录,然后重新运行您的插入或使用其他值运行您的插入。
答案 1 :(得分:0)
看看您的输出,似乎是导致问题的原因。
在注册session.commit()文件的第80行,“ D:\ Audric \ Work \ firstcode \ python \ FCASIS \ AC403(FLASK-SHARED)\ deploy -experimental \ project.py”
session.commit()可能无法将数据提交到数据库。我认为您尚未正确设置数据库。由于您使用的是Flask,因此建议您使用Flask-SQLAlchemy,这使得在Flask应用程序上使用SQLAlchemy更加容易。
查看有关此主题的出色教程。 https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-iv-database。
希望这会有所帮助。