我有描述如下用戶模型: -SQL的鍊金完整性錯誤
class User(db.Model, object):
__tablename__ = "users"
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(15), unique=True)
email = db.Column(db.String(50), unique=True)
password = db.Column(db.String(80))
def is_authenticated(self):
return True
def is_active(self):
return True
def get_id(self):
return unicode(self.id)
現在我有其被描述爲低於登記表: -
class RegisterForm(Form):
email = StringField('email', validators=[InputRequired(), Email(message='Invalid email'), Length(max=50)])
username = StringField('username', validators=[InputRequired(), Length(min=4, max=15)])
password = PasswordField('password', validators=[InputRequired(), Length(min=8, max=80)])
現在的問題,
當我通過網絡應用程序註冊/註冊時,ID會自動遞增並創建一個新用戶。所以我創建了user1,id1通過註冊表單由sql-alchemy自動分配。
現在我在數據庫中使用插入語句插入一個新的用戶與一個有效的ID。所以我通過在數據庫中插入語句創建了id2的user2。
如果我嘗試創建通過web應用程序用戶3,它顯示sqlalchemy.exc.IntegrityError IntegrityError:(psycopg2.IntegrityError)重複鍵值違反唯一約束 「users_pkey」 詳細信息:按鍵(ID)=(2 ) 已經存在。
現在再次如果我嘗試使用user3註冊,它會創建一個新用戶。
我嘗試使用自動加載,使燒瓶知道最近的ID,但它不工作。
您可以將ID設置爲明確增加,像這樣:'ID = db.Column' – Cicero
它不是由包括自動增量=真正的工作(db.Integer,primary_key = True時,自動增量= TRUE)。如果在出現錯誤後再次嘗試,它正在遞增。 –
在添加'...,autoincrement = True'後,您是否將更改應用於數據庫?這不會自動發生,您必須以某種方式遷移現有的數據庫,即將您的整數主鍵列更改爲序列。 –