SQLAlchemy - 处理约束失败

7

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

username = db.Column(db.String(50), unique=True)

当我添加一行数据时,如果违反了唯一性约束(即要添加的用户名已经存在),会抛出IntegrityError异常:

IntegrityError: (IntegrityError) (1062, u"Duplicate entry 'test' for key 'username'")

是否可以将约束条件的破坏映射到自定义异常?例如:UsernameExistsError

我想能够捕获单个约束条件的破坏,并向用户发送响应。例如:“此用户名已被使用”

这种情况可能吗?或者有什么更好的方法吗?

任何指导都将不胜感激 :)

1个回答

2
下一个最好的办法可能是在调用周围加上try ... except,解析错误消息,并使用构造的错误消息通知用户。
沿着这条线路,您可以使用Flask的自定义错误页面,尝试... except错误并返回自定义错误代码。

我害怕只有解析错误是唯一的选择。如果Flask能够处理这样的事情,那将会很棒... - mickzer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接