【发布时间】:2019-02-04 03:16:22
【问题描述】:
您通常如何处理 Flask 中的唯一数据库条目?我的数据库模型中有以下列:
bank_address = db.Column(db.String(42), unique=True)
问题是,在我检查它是否已经在数据库中之前,我得到了一个错误:
检查是否唯一,然后写入数据库:
if request.method == 'POST':
if user.bank_address != request.form['bank_address_field']:
user.bank_address = request.form['bank_address_field']
db.session.add(user)
db.session.commit()
我得到的错误:
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) 唯一 约束失败:user.bank_address_field [SQL: 'UPDATE user SET 银行地址字段=? WHERE user.id = ?']
【问题讨论】:
-
我不明白问题出在哪里。您尝试写入数据库,数据库拒绝,因为存在这样的条目。这就是唯一索引的工作方式(以及它们必须如何工作:假设您检查记录是否存在,DB 告诉您不存在,另一个用户联系您的服务器并创建具有相同值的记录,然后您去插入您的值。 .. 现在你有一个重复,即使你检查了。唯一性检查必须与插入同时进行。)
标签: python sqlite flask sqlalchemy unique