sqlalchemy.exc.IntegrityError:(pymysql.err.IntegrityError)(1062,“键“”的重复条目“”

问题描述 投票:0回答:2

我正在使用

flask
mysql
sqlalchemy
开发应用程序。 当我尝试在唯一列中插入重复数据时,应用程序崩溃了。除了这样之外,还有什么方法可以在 try 中捕获此异常吗?

        if form.validate_on_submit():
            hashed_password = generate_password_hash(form.password.data, method='sha256')

            # write data on DB
            try:
                new_user = User(name=form.name.data, surname=form.surname.data, email=form.email.data,
                                pwd_hash=hashed_password, is_active=False, urole=form.urole.data)
                db.session.add(new_user)
                db.session.commit()

                return '<h1>Welcome, You are a new user!</h1>'
            except IntegrityError:
                return '<h1>This email alredy exists!</h1>'
python mysql error-handling flask-sqlalchemy
2个回答
1
投票

这就是我在我的应用程序中解决它的方法:

import pymysql
from sqlalchemy import exc

def add_bulk_data(data):
    for entry in data:
        session.add(org)
        try:
            session.commit()
        except pymysql.err.IntegrityError as e:
            session.rollback()
        except exc.IntegrityError as e:
            session.rollback()
        except Exception as e:
            session.rollback()

我必须将

commit()
命令封装在我的 try 语句中。


0
投票

好的,这确实解决了问题,但是这种情况下如何停止主键的自增呢?这可以防止 Flask 应用程序崩溃,但数据库中的主键会自动增量。

© www.soinside.com 2019 - 2024. All rights reserved.