我想查询行并在更改每个行的属性时复制它们。这是我的密码。在
colObjs= db.session.query(Column).filter_by(chart_id=oldChartID).all()
for colObj in colObjs:
make_transient(colObj)
print colObj.id
del colObj.id
colObj.chart_id= newChartID
db.session.add(colObj)
db.session.commit()
在这个例子中,colObjs
有两个对象。我循环遍历colObjs
,遍历每个colObj
。循环中的第一项复制得很好。但是当我尝试复制第二个时,我得到了这个错误。在
此外,循环第一项上的print
语句的输出显示coloObj
id,但第二个输出{
为什么会发生这种错误?我怎么修?在
得到异常的原因是在循环中提交。总之,这通常是一个反模式。在第一轮the act of committing will expire the ^{} instances 之后,在第二次迭代中,
del colObj.id
会出现,因为对象已经过期,并且没有加载状态。解决方案是简单地在循环之后移动提交。在相关问题 更多 >
编程相关推荐