gpt4 book ai didi

python - sqlalchemy.exc.IntegrityError : (sqlite3. IntegrityError) UNIQUE 约束失败 : users. 登录

转载 作者:太空宇宙 更新时间:2023-11-04 05:24:29 25 4
gpt4 key购买 nike

我正在使用 sqlite 数据库,我将模型声明为:

class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
login = db.Column(db.String(80), unique=True)
password = db.Column(db.String(64))

def is_authenticated(self):
return True

def is_active(self):
return True

def is_anonymous(self):
return False

def get_id(self):
return self.id

# Required for administrative interface
def __unicode__(self):
return self.username

我已经添加了一个像这样的模型实例:

admin = admin.Admin(app, 'Example: Auth', index_view=MyAdminIndexView(), base_template='my_master.html')

admin.add_view(MyModelView(User, db.session))

db.drop_all()
db.create_all()

if db.session.query(User).filter_by(login='passport').count() <= 1:
user = User(login = 'passport', password = 'password')
db.session.add(user)
db.session.commit()

但是,如果我对 db.drop_all() 进行注释,则会发生错误:

sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: users.login [SQL: 'INSERT INTO users (login, password) VALUES (?, ?)'] [parameters: ('passport', 'password')]

如果不注释 db.drop_all(),一切都很有趣。因为这个数据库上还有其他表,所以我不想在运行时删除所有表。有没有其他解决方案可以解决这个问题?

非常感谢。

最佳答案

您正在将计数与 <= 1 进行比较.因此,您将尝试创建新用户,即使它已经存在。所以它应该只是 < 1 :

if db.session.query(User).filter_by(login='passport').count() < 1:
user = User(login = 'passport', password = 'password')
db.session.add(user)
db.session.commit()

关于python - sqlalchemy.exc.IntegrityError : (sqlite3. IntegrityError) UNIQUE 约束失败 : users. 登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39288538/

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