SQLAlchemy允许null作为ForeignKey

ma2*_*a2s 14 sql sqlalchemy foreign-keys foreign-key-relationship

假设我有两个型号

class EntityModel(DB.Model):
    id = DB.Column(DB.Unicode(37), primary_key=True)

class DocumentModel(DB.Model):
    id = DB.Column(DB.Unicode(37), primary_key=True)
    entity_id = DB.Column(DB.Unicode(37), DB.ForeignKey('entity.id',   ondelete='cascade'), nullable=True)
    entity = DB.relationship('EntityModel')
Run Code Online (Sandbox Code Playgroud)

我可以使用entity_id NULL创建新文档.但是,一旦我将有效的entity_id设置为该文档,我就不能再将其归零.我收到错误:

Cannot add or update a child row: a foreign key constraint fails

如果它具有有效的entity_id,如何在某些文档中将null设置为entity_id?

MOC*_*KBA 7

你的ORM定义看起来很好,DocumentModel.entity_id确实可以为空.在这种情况下我要做的是检查MySQL中的实际表定义,并确保它与您的ORM定义相对应,例如

-- make sure DocumentModel.entity_id is nullable :
SHOW CREATE TABLE DocumentModel\G 
UPDATE DocumentModel.entity_id SET entity_id = NULL WHERE entity_id = XXX;
Run Code Online (Sandbox Code Playgroud)