锁定或捕获IntegrityError?

时间:2014-01-26 05:30:32

标签: python sql sqlalchemy

如果要将新记录添加到User表中(如果用户尚未“存在”),应该“锁定共享模式”(可能是“select for update”?)来防止其他线程发生试图做同样的事情?通过'exists',它可能只是一个具有相同用户名的记录。例如,我正在尝试确保所有用户都拥有唯一的用户名,因此我正在检查是否可以检索具有该用户名的任何现有记录。如果没有,它可以继续。如果多个线程试图添加相同的用户名,则会出现竞争条件。

或许,依靠唯一约束并捕获IntegrityError会是一个好主意吗?也就是说,在出现IntegrityError时,它会再次读取该表并选出刚刚添加的记录。

谢谢!

0 个答案:

没有答案