userExists = g.db.execute('SELECT username FROM users WHERE username = ?', [request.form['usr']])
if request.form['usr'] == userExists:
error = 'Username already exists.'
希望的代碼是不言自明的。如果沒有,我想要一個註冊用戶對數據庫檢查他的名字。用戶名必須是唯一的,所以如果輸入到表單中的信息(request.form ['usr'])等於保存到userExists變量的SQL查詢的結果,那麼應該拋出一個錯誤(error ='Username already exists 。')。
該查詢是否返回匹配用戶名而不是用戶名值的行數?或者是邏輯錯誤。
爲什麼第二個除了沒有()後回滾?爲什麼你甚至需要第二個除外。 –
語法錯誤,已更正。這確實是一個偏好問題。鑑於代碼是在finally塊中提交的,可能需要確保沒有任何導致錯誤條件的事件捕獲到except塊之前的數據庫修改。當try塊包含比本例中更多的數據庫交互代碼時,這是一個好習慣。第二個除外塊是處理與唯一約束衝突不同的錯誤。 – Spade