我有一個用戶更新功能,我允許用戶更改他們的電子郵件地址,但同一地址在數據庫中必須是唯一的,所以在更新之前,我必須檢查他們的新電子郵件是否已存在於數據庫中,但我用來檢查的查詢返回同一行。例如: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將更新提交給數據庫,但在某種事務下,所以我的查詢返回了我正在編輯的同一用戶。我已經通過創建第二個會話對象解決了這個問題,但看起來像是過度的。任何更好的想法?我有道理嗎?
用戶名也是唯一的等等等等。我更喜歡我自己的方法,而不是在驗證過程之外編寫各種函數和查找,以獲得相同的結果。 數據被大量分配,驗證和保存/更新。我試圖避免給個別領域過多的關注,這會導致很多不應該存在的代碼(驗證過程之外)。我有它的工作,但與第二屆會議,查詢外的第一個查詢的會話/交易 –