flask sqlalchemy 唯一约束不起作用

flask sqlalchemy unique constraint not working

我正在阅读 Miguel 的精彩 Flask Web 开发书籍。我对模型有疑问。

这是我的用户模型

class User(db.Model):
   __tablename__ = 'users'
   id = db.Column(db.Integer, primary_key=True)
   username = db.Column(db.String(64), unique=True, index=True)
   role_id = db.Column(db.Integer, db.ForeignKey('roles.id'))

   def __repr__(self):
       return '<User %r>' % self.username

在模型中,它提到 'username' 字段是唯一的,这意味着该列应该具有唯一值。

但我在用户模型中有具有相同值的条目。

这是来自 shell session 的片段。

for user in User.query.all():
    print user.username

输出:

None
None
None
None
None
None
None
None
None
None
None
None

我想知道为什么它允许多次创建带有 username=None 的条目?

谢谢

您必须在 username 列声明中添加子句 nullable=False

username = db.Column(db.String(64), unique=True, index=True, nullable=False)

DB 没有将 None 作为值。