python - 使用烧瓶 sqlalchemy.exc.IntegrityError 时出错:(sqlite3.IntegrityError) UNIQUE 约束失败
问题描述
我对此很陌生,我只是在尝试烧瓶,我似乎无法用 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)
来自项目.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)
完整追溯:
Traceback(最近一次通话最后一次):文件“C:\Users\audri\AppData\Roaming\Python\Python37\site-packages\flask\app.py”,第 2309 行,通话中 返回 self.wsgi_app(environ, start_response) 文件“C:\Users\audri\AppData\Roaming\Python\Python37\site-packages\flask\app.py”,第 2295 行,在 wsgi_app 响应 = self.handle_exception(e)文件“C:\Users\audri\AppData\Roaming\Python\Python37\site-packages\flask\app.py”,第 1741 行,handle_exception reraise(exc_type, exc_value, tb) 文件“C:\Users\audri\ AppData\Roaming\Python\Python37\site-packages\flask_compat.py”,第 35 行,在 reraise raise 值文件“C:\Users\audri\AppData\Roaming\Python\Python37\site-packages\flask\app.py ",第 2292 行,在 wsgi_app 响应 = 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 reraise(exc_type, exc_value, tb) 文件“C:\ Users\audri\AppData\Roaming\Python\Python37\site-packages\flask_compat.py”,第 35 行,在 reraise raise 值文件“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 return self.view_functionsrule.endpoint File "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”,第 447 行,在 _prepare_impl 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”,第 2380 行,在 _flush 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 行,在 reraise raise 值文件“C :\Users\audri\AppData\Roaming\Python\Python37\site-packages\sqlalchemy\orm\session.py”,第 2344 行,在 _flush 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 行,在 save_obj 映射器中执行 uow 文件“C:\Users\audri\AppData\Roaming\Python\Python37\site-packages\sqlalchemy\orm\persistence.py”,第 181 行,表,插入)文件“C:\Users\audri\AppData\Roaming\Python\Python37\site-packages\sqlalchemy\orm\persistence.py”,第 866 行,在 _emit_insert_statements 执行(语句,参数)文件“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",第 269 行,在 _execute_on_connection 返回连接。_execute_clauseelement(self, multiparams, params) 文件“C:\Users\audri\AppData\Roaming\Python\Python37\site-packages\sqlalchemy\ engine\base.py”,第 1060 行,在 _execute_clauseelementcompiled_sql,distilled_params 文件“C:\Users\audri\AppData\Roaming\Python\Python37\site-packages\sqlalchemy\engine\base.py”中,第 1200 行,在 _execute_context 上下文中)文件“C:\Users\audri\AppData\Roaming\Python\Python37\site-packages\sqlalchemy\engine\base.py”,第 1413 行,在 _handle_dbapi_exception exc_info 文件“C:\Users\ audri\AppData\Roaming\Python\Python37\site-packages\sqlalchemy\util\compat.py”,第 265 行,在 raise_from_cause reraise(类型(异常),异常,tb=exc_tb,cause=cause)文件“C:\ Users\audri\AppData\Roaming\Python\Python37\site-packages\sqlalchemy\util\compat.py”,第 248 行,在 reraise raise value.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”,第 509 行,在 do_execute cursor.execute(statement, parameters) sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: Login Info.username [SQL: 'INSERT INTO "Login Info" (username, password) VALUES (?, ?) '] [参数:('audyappy','secret')](此错误的背景:http://sqlalche.me/e/gkpj )
我似乎找不到问题,所以如果你能帮助我,那就太好了。谢谢!
解决方案
您在尝试插入数据的表的用户名列上有一个唯一性约束:username = Column(String, nullable=False, unique=True)
您尝试插入的用户名值已经存在于该表中。尝试删除有问题的记录并重新运行插入或使用不同的值运行插入。
推荐阅读
- r - R - 模糊查找和重新编码
- julia - 如何在 Julia 中编写任意连续分布,或者至少模拟其中的采样?
- android-fragments - 为什么我的浮动操作按钮在 ViewPager 中不能正常工作?
- sql - 试图在我的 postgres 表中的每条新记录上添加一个星期数
- python - GeoDjango如何在此查询中以米为单位显示距离
- angular - Angular 12 升级后 Karma 没有运行单元测试
- google-apps-script - 如何将 FOR LOOP 添加到此 Google 脚本代码中?
- java - 机器人竞赛 -> 机器人在笛卡尔网格上移动。L 是左 90 度,R 是右 90 度,F 是向前一格。请看附件截图
- r - 如何使用ggtext将图像绘制为y轴标签?
- java - 创建比可用处理器更多的线程会产生性能开销吗?