Sql炼金术复制委员会

2024-09-28 01:31:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前在Cherrypy应用程序中遇到了一个问题。 我自己的自定义会话模块,执行时会话.add同一对象更新两次。在

cherrypy.request.SessionManager.user_data = user

try:

    db_session.add(cherrypy.request.SessionManager)
    db_session.commit()

会回来的

^{pr2}$

以前有人见过这个吗?在

另外,在我制作的其他模块中不会发生这种情况。在


Tags: 模块对象add应用程序dbdatarequestsession
2条回答

好的,很抱歉耽搁了这么久,但我正在度假。在

无论如何,为了防止双重提交,您需要从会话中删除该对象,并使用^{}来执行此操作。在

还有一件事。在

使用^{} 将允许您重用已删除的对象,。在

希望这能帮助有需要的人。在

附言:请注意,一个物体可能会行为不端,或者未来对炼金术的任何修补可能会破坏兼容性。所以亵渎是对的。在

您可以尝试将user_数据添加到会话中,而不是将SessionManager对象本身添加到会话中。这至少会使调试更加简单。在

事实上,我不确定您是否在cherrypy SessionManager中有一个数据库会话,这似乎是不受欢迎的,但也许sqlalchemy可以处理它(?)或者可能正在对数据库中无法同时完成的对象进行多个更改,例如,这可能是某些级联在echo on(?)时的外观。你用的级联值是多少?在

我不确定第二次阅读sql时更新了什么。它看起来只是一些隐含的东西。您可能需要显示这些对象的一些代码,或者导致更新得到更好答案的一些代码。但也许以上的直觉会有所帮助。祝你好运

相关问题 更多 >

    热门问题