我有一个用户更新功能,我允许用户更改他们的电子邮件地址,但同一地址在数据库中必须是唯一的,所以在更新之前,我必须检查他们的新电子邮件是否已存在于数据库中,但我用来检查的查询返回同一行。例如:sqlalchemy查询问题
user = User.query.get(1)
user.email = '[email protected]'
if user.validate(): # The validate function performs a query to see if '[email protected]' is already taken
user.save()
现在正在进入验证功能,我有:
check = User.query.filter_by(User.email='[email protected]').first()
if check:
# email already exists
问题是,check
持有我的编辑同一个用户。 Sqlalchemy将更新提交给数据库,但在某种事务下,所以我的查询返回了我正在编辑的同一用户。我已经通过创建第二个会话对象解决了这个问题,但看起来像是过度的。任何更好的想法?我有道理吗?
用户名也是唯一的等等等等。我更喜欢我自己的方法,而不是在验证过程之外编写各种函数和查找,以获得相同的结果。 数据被大量分配,验证和保存/更新。我试图避免给个别领域过多的关注,这会导致很多不应该存在的代码(验证过程之外)。我有它的工作,但与第二届会议,查询外的第一个查询的会话/交易 –