我有以下flask-sqlalchemy表:
class Repo(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50), nullable=False)
followers = db.Column(db.PickleType, nullable=False)
created_on = db.Column(db.DateTime, default=datetime.utcnow)
last_modified = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
我们说我做了以下行并将其推送到数据库:
repo = Repo(
name='My Repo',
followers=[
{'name': 'Johnny', 'id': 34752, 'views': 6},
{'name': 'Mike', 'id': 69241, 'views': 3}
]
)
db.session.add(repo)
db.session.commit()
如果我想改变这一行,我应该能够做到以下几点;但是,数据库并没有反映出这种变化。
repo.data.append({'name': 'Jessica', 'id': 12941, 'views': 12})
print(len(repo.data))
# 3
db.session.commit()
print(len(repo.data))
# 2
我已经找到了以下解决方法,但我想知道为什么原始方法没有按预期工作。
data = list(repo.data)
data.append({'name': 'Jessica', 'id': 12941, 'views': 12})
repo.data = data
db.session.commit()
print(len(repo.data))
# 3