gpt4 book ai didi

python - Sql-alchemy 完整性错误

转载 作者:太空宇宙 更新时间:2023-11-03 15:17:32 24 4
gpt4 key购买 nike

我有用户模型,描述如下:-

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。

如果我尝试通过网络应用程序创建 user3,它会显示sqlalchemy.exc.IntegrityErrorIntegrityError:(psycopg2.IntegrityError)重复键值违反唯一约束“users_pkey”详细信息: key (id)=(2) 已存在。

现在,如果我再次尝试使用 user3 注册,它会创建一个新用户。

我尝试使用自动加载让flask知道最近的id,但它不起作用。

最佳答案

黑客可以从 id 列中查询最大 id 并将其加 1 并将其分配给新用户以防止主键冲突。

max_id = session.query(User).order_by(User.id.desc()).first()
new_user = User(id=max_id+1, email=form.email.data, username=form.username.data, password=hashed_password)
db.session.add(new_user)
db.session.commit()

关于python - Sql-alchemy 完整性错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43758508/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com