Python sqlalchemy不一致的行更新
以下每个函数都有10%的时间无法更新记录。我对炼金术有什么不了解?谢谢Python sqlalchemy不一致的行更新,python,sql,sqlalchemy,Python,Sql,Sqlalchemy,以下每个函数都有10%的时间无法更新记录。我对炼金术有什么不了解?谢谢 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 )\ .
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
通过我自己的测试解决了这个谜。在此发布以帮助任何人搜索 代码有点简化。我们确实看到了更像这样的情况:
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()
发现错误了吗?需要第一个函数来执行以下操作:
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,则将失败