SQLAlchemy - 处理约束失败

mic*_*zer 5 python sqlalchemy flask flask-sqlalchemy

使用SQLAlchemy,如果我的数据库中有一个唯一的列,例如,用户名:

username = db.Column(db.String(50), unique=True)
Run Code Online (Sandbox Code Playgroud)

当我添加一个违反此约束的行时,我正在尝试添加的用户名已存在,则抛出IntegrityError:

IntegrityError: (IntegrityError) (1062, u"Duplicate entry 'test' for key 'username'")
Run Code Online (Sandbox Code Playgroud)

是否可以将约束的中断映射到自定义异常?eg.UsernameExistsError

我希望能够捕获单个约束中断,并将响应发送回用户.例如:"此用户名已被使用"

这可能吗?或者下一个最好的东西是什么?

任何指导将不胜感激:)

Cel*_*leo 2

下一个最好的事情可能是用 包围调用try ... except,解析错误消息,并用构造的错误消息通知用户。

按照这些思路,您可以使用 Flask 的自定义错误页面try ... except来错误并返回自定义错误代码。