创建会话对象
循环要插入的记录列表:
do the session.add(obj) session.commit() get obj.ID do the session.add(obj2) # with obj2 having the ID from the obj session.commit()
如果我们有多条记录,那么只有最后一条记录数据才能正确提交
任何人都可以帮我纠正这个问题.
解决方法 您可以尝试重构代码以使用此代码:Session = sqlalchemy.orm.sessionmaker(...)def transaction(self,callback): session = sqlalchemy.orm.scoped_session(Session) try: result = callback(session) except: session.rollback() raise else: session.commit() finally: session.close() return result
然后每个事务都有自己的功能,如下所示:
def updatetxn(pk,newvalue): def txn(session): obj = session.query(myclass).filter_by(ID=pk).one() obj.fIEld = newvalue session.add(obj) return txntransaction(updatetxn(4,'abc'))
在一个地方处理提交/回滚逻辑,并依赖于功能范围来确定工作单元的范围,可以降低应用程序的复杂性并消除您尚未发现的错误.
总结以上是内存溢出为你收集整理的python – 在循环中使用SQLAlchemy Session对象提交数据时出现问题全部内容,希望文章能够帮你解决python – 在循环中使用SQLAlchemy Session对象提交数据时出现问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)