我为Flask应用程序使用SQLAlchimy定义了几个表。我已经在外键上设置了约束类,但是我的应用程序允许我使用不存在的引用ID注册新条目。
这些是我的课程:
class IsInGroup(Base):
__tablename__ = "Is_in_group"
id = Column('id', Integer, primary_key=True)
ref_id_user_group = Column('ref_id_user_group', Integer, ForeignKey("Users.id_user"), nullable=False)
ref_id_group_group = Column('ref_id_group_group', Integer, ForeignKey("Groups.id_group"), nullable=False)
users = relationship('Users', foreign_keys=ref_id_user_group)
groups = relationship('Groups', foreign_keys=ref_id_group_group)
class Users(Base, UserMixin):
__tablename__ = "Users"
id_user = Column('id_user', Integer, primary_key=True)
name_user = Column('name_user', Unicode)
passwd_hash = Column('passwd_hash', Unicode)
email_user = Column('email_user', Unicode)
class Groups(Base):
__tablename__ = "Groups"
id_group = Column('id_group', Integer, primary_key=True)
name_group = Column('name_group', Unicode)
因此,我的代码可以运行,但不能运行:
newUser = Users(name_user="admin", email_user="lol@lol.com")
newUser.set_password("test")
db.session.add(newUser)
newGroup = Groups(name_group="admin group",ref_id_group_categorie_group_categorie=1, ref_id_user_creator_group=1)
db.session.add(newGroup)
# ref id does not exist
newAssociation = IsInGroup(ref_id_user_group=2, ref_id_group_group=2)
db.session.add(newAssociation) #works
我的数据库(SQLite)没有阻塞。我正在等待类似“ IsInGroup.ref_id_user_group上的ForeignKeyConstraint == Users.id_user但id_user不存在”的错误。