Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python sqlalchemy对象已保存以完成操作_Python_Turbogears2 - Fatal编程技术网

Python sqlalchemy对象已保存以完成操作

Python sqlalchemy对象已保存以完成操作,python,turbogears2,Python,Turbogears2,我是sqlalchemy的新手,我查询对象并删除会话以防止会话保存更改,然后在会话中添加对象并进行更改,但不刷新或提交 当控制器结束时,会话保存我的对象,我不希望这样,如果我没有刷新或提交,我希望对象丢失 我的代码: object = model.DBSession.query(model.Object).filter_by( field = value ).first() model.DBSession.expunge(object) object.field = gfhggghfg ob

我是sqlalchemy的新手,我查询对象并删除会话以防止会话保存更改,然后在会话中添加对象并进行更改,但不刷新或提交

当控制器结束时,会话保存我的对象,我不希望这样,如果我没有刷新或提交,我希望对象丢失

我的代码:

object = model.DBSession.query(model.Object).filter_by( field = value ).first()

model.DBSession.expunge(object)

object.field = gfhggghfg
object.field2 = hsjsjsjsjs

model.DBSession.add(object)


#finish controller turbogearsr the session save the change. I have autocommit and autoflush = False

您甚至不需要删除该对象,因为TurboGears提供了一个事务管理器,您可以直接终止该事务,以便TurboGears将其丢弃,而不是提交更改:

import transaction

@expose('mytemplate')
def my_controller(self):
    object = model.DBSession.query(model.Object).filter_by( field = value ).first()
    object.field = 'Hello'

    transaction.doom()  # This will prevent changes to be committed.
    return dict(value=object.field)
要在整个项目中禁用它,请编辑config/app_cfg.py并添加:


非常感谢您的回答,但我不能将transaction.doom放在任何地方,这样做会有一些默认设置如果您需要在整个项目中禁用它,只需在您的config/app\u cfg.py文件中pust base\u config.use\u transaction\u manager=False
base_config.use_transaction_manager = False