python - flask_sqlalchemy 插入数据时发生错误后如何处理?
巴扎黑
巴扎黑 2017-04-17 17:54:49
[Python讨论组]

使用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

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

谢谢~

巴扎黑
巴扎黑

全部回复(2)
黄舟
@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'))
黄舟

这个应该你自己做限制吧,作为开发本身设置了Name unique=True,那么你就有义务在form里验证name的唯一性啊

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号