【发布时间】:2017-11-18 13:36:07
【问题描述】:
我试图弄清楚为什么字段的“唯一”约束不起作用。我正在使用 Flask、SQLAlchemy 和 Sqlite。
考虑模型:
from app import db
from flask_login import UserMixin
class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), unique=True)
password = db.Column(db.String(64))
email = db.Column(db.String(120), unique=True)
def __repr__(self):
return '<User %r>' % self.username
我希望,由于用户名字段有一个唯一约束,它不允许我添加具有相同用户名的用户。不过确实如此。
从外壳:
from app import db
from app.models import User
user = User(username='test')
user2 = User(username='test')
db.session.add(user)
db.session.commit()
db.session.add(user2)
db.session.commit()
User.query.all()
输出:
[<User 'test'>, <User 'test'>]
我错过了什么吗?
【问题讨论】:
-
你确定你真的在数据库中有唯一的约束,而不仅仅是模型定义吗?
标签: python sqlalchemy unique-constraint