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
作为值。
我正在阅读 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
作为值。