以下每个功能都无法更新记录~10%的时间。我对sqlalchemy不了解什么?谢谢!
def update_field_1 ( session, rec ):
rec.field1 = 'hello'
session.merge(rec)
return
def update_field_2 ( session, rec ):
session.query( TableName ).filter( TableName.id==rec.id )\
.update( {"field2": "hello"} )
return
# create conn/session
# create record
session.add( record )
session.commit()
update_field_1 ( session, record )
update_field_2 ( session, record )
session.commit()
# close session/conn
答案 0 :(得分:0)
用我自己的测试解决了这个谜。张贴在这里帮助任何人搜索...
代码有点简化。我们真的看到更像这样的东西:
if something:
session.add( record )
session.commit()
else:
session.rollback()
if something_else:
update_field_1 ( session, record )
update_field_2 ( session, record )
else:
session.rollback()
发现错误?需要第一个功能来做这样的事情:
session.merge( rec )
session.commit()
第二种情况,如果没有发生添加提交且会话中没有id,则会失败。