sqlalchemy 更新关联列表时不会忽略任何值

问题描述 投票:0回答:1

我有两个这样的模型:

class Parent(db.Model):
  ...
  children = db.relationship(Child,  cascade="all,delete-orphan")

class Child(db.Model):
  a = db.Column(db.Integer(), primary_key=True, , db.ForeignKey('Parent.id'))
  b = db.Column(db.String())
  c = db.Column(db.String())

parent = Parent.query.get(xxx)
parent.children = [Child(a=123, b="b", c=None), ...]
db.session.add(parent)
db.session.flush()

如果数据库已经有a=123的子记录,上面的代码会触发这样的更新语句“update child set b='b' where a= 123”

问题在于它无法将c的值更新为null,c=None会被忽略。

我使用flask-sqlalchemy 2.4.0和sqlalchemy 1.3.8。

如何将其更新为空? 另外,如果数据库没有a=123的记录,代码会触发insert sql,none值会成功插入。

python sqlalchemy
1个回答
0
投票

感谢 github 上 Gord Thompson 的回答。

抱歉,我做了一个最小的demo进行测试,并没有重现同样的问题,但它确实存在于实际的程序中,所以它可能是由程序的其他部分引起的。在提问之前我会再做一个实验来确认问题出在哪里。

© www.soinside.com 2019 - 2024. All rights reserved.