gpt4 book ai didi

python - "Dependency rule tried to blank-out primary key column"可能是什么原因

转载 作者:行者123 更新时间:2023-11-28 19:01:58 27 4
gpt4 key购买 nike

当我尝试删除由“id”标识的类别实例及其 category_image 和文件实例时,如下所示:

c = Category.query.get(id)
for ci in c.images:
db.session.delete(ci)
db.session.flush()
for ci in c.images:
db.session.delete(ci.file)
db.session.flush() # if i type here db.session.commit() all is fine
db.session.delete(c)
db.session.commit()

我收到断言错误:依赖规则试图清空实例“”上的主键列“category_image.id_category”。但是当我用提交替换删除 category_image.files 之后的刷新时,它就可以工作了。在我将 CategoryImage 表更改为中介后,我注意到了它。在更改之前,它有自己的 pk,但没有合并,并且一切正常。这是我当前的模型定义。

class File(db.Model):                              
__tablename__ = 'file'

id_file = Column(Integer, Sequence('seq_id_file'), primary_key=True, nullable=False)
name = Column(Text, nullable=False)
path = Column(Text, nullable=False, unique=True)
protected = Column(Boolean, nullable=False, default=False)


class Category(db.Model):
__tablename__ = 'category'

id_category = Column(Integer, Sequence('seq_id_category'), primary_key=True, nullable=False)
name = Column(UnicodeText, nullable=False, unique=True)
images = relationship('CategoryImage', backref='images')


class CategoryImage(db.Model):
__tablename__ = 'category_image'
__table_args__ = (
PrimaryKeyConstraint('id_category', 'id_file', name='seq_id_category_image'),
)

id_category = Column(Integer, ForeignKey(Category.id_category), nullable=False)
id_file = Column(Integer, ForeignKey(File.id_file), nullable=False)
id_size_type = Column(Integer, nullable=)
file = relationship(File)

现在我想弄清楚刚刚发生了什么。如果我用错了,请纠正我。

最佳答案

我刚刚注意到我必须按照在 table_args, PrimaryKeyConstraint('id_category', 'id_file') 中声明的相同顺序删除与中间模型相关的对象。因此,当我以这种方式执行它时:session.delete(category_image)、session.delete(category)、session.delete(file) 并在提交之前提交或刷新所有位置,然后一切正常。如果有人在 alch 文档中发现有关它的信息,请告诉我。

关于python - "Dependency rule tried to blank-out primary key column"可能是什么原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51825893/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com