开发者社区 问答 正文

flask_sqlalchemy 插入数据时发生错误后如何处理?

使用flask_sqlalchemy在插入数据发生错误的时候应该如何处理?

相关模型如下:

class Supplier(db.Model):

ID = db.Column(db.Integer, primary_key=True)
Name = db.Column(db.String(250), unique=True, nullable=False)

视图中的操作如下:

@supplier.route('/purchase/supplier/add', methods=['GET', 'POST'])
def add_supplier():

form = SupplierForm(request.form)
if request.method == 'POST' and form.validate():
    supplier = Supplier(form.supplier_name.data)
    db.session.add(supplier)
    db.session.commit()
return redirect(url_for('supplier.list_supplier'))

当我插入两个相同的supplier_name时,就会出现这样的错误:sqlalchemy.exc.IntegrityError,当我返回,尝试重新输入时,出现了这样的错误:sqlalchemy.exc.InvalidRequestError。

我期望的结果是可以有一个办法知道这个数据不符合要求并提示用户修改输入,请问应该如何处理?

谢谢~

展开
收起
a123456678 2016-07-04 17:45:27 2940 分享 版权
1 条回答
写回答
取消 提交回答
  • @supplier.route('/purchase/supplier/add', methods=['POST'])
    def add_supplier():
        form = request.form
        if request.method == 'POST':
            print(form)
            supplier = Supplier(form['supplier_name'],
                                form['supplier_constract'],
                                form['supplier_phone'],
                                form['supplier_address'],
                                form['supplier_remark'])
            try:
                db.session.add(supplier)
                db.session.commit()
                flash('供应商添加成功!', 'success')
            except:
                db.session.rollback()
                flash('输入不合法,请重新输入!', 'danger')
        return redirect(url_for('supplier.list_supplier'))
    2019-07-17 19:51:00
    赞同 展开评论
问答标签:
问答地址: