小编fbe*_*sho的帖子

SQLAlchemy嵌套回滚错误

我在我的python代码中收到了如下错误(它收集了twitter状态并存储在数据库中).

sqlalchemy.exc.InvalidRequestError: This Session's transaction has been rolled back by a nested rollback() call.  To begin a new transaction, issue Session.rollback() first.
Run Code Online (Sandbox Code Playgroud)

我想知道问题是什么,它为什么会发生,我该如何解决它.

我不知道nested rollback.有没有简单的例子nested rollback


编辑:问题解决了.在这种情况下,重点是在我们显式调用rollback之前不会执行回滚,因此当我们包含时nested rollback,我们应该在try语句中编写它,并nested rollbackhttp:// www中写入异常语句(在大多数情况下).sqlalchemy.org/TRAC /维基/ FAQ#Thetransactionisinactiveduetoarollbackinasubtransaction

而且,这是正确的代码示例.我从上面的链接中引用了这个.

sqlalchemy.exc.InvalidRequestError: This Session's transaction has been rolled back by a nested rollback() call.  To begin a new transaction, issue Session.rollback() first.
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy

30
推荐指数
1
解决办法
2万
查看次数

python pickle上的命名空间

当我使用pickle和unittest时出错了.

我写了3个程序文件:

  1. 对于要被腌制的课程,
  2. 对于在#1中使用类的类,
  3. 用于测试#2级的单元测试.

实际代码分别如下.

#1.ClassToPickle.py

import pickle
class ClassToPickle(object):
    def __init__(self, x):
        self.x = x
if __name__=="__main__":
    p = ClassToPickle(10)
    pickle.dump(p, open('10.pickle', 'w'))
Run Code Online (Sandbox Code Playgroud)

#2.SomeClass.py

from ClassToPickle import ClassToPickle
import pickle

class SomeClass(object):
    def __init__(self):
        self.pickle = pickle.load(open("10.pickle", 'r'))
        self.x = self.pickle.x
        print self.x

if __name__ == "__main__":
    SomeClass()
Run Code Online (Sandbox Code Playgroud)

#3.SomeClassTest.py

import unittest
from SomeClass import SomeClass
from ClassToPickle import ClassToPickle # REQUIRED_LINE

class SomeClassTest(unittest.TestCase):
    def testA(self):
        sc = SomeClass()
        self.assertEqual(sc.x, 10)

def main():
    unittest.main()

if __name__ == "__main__":
    main() …
Run Code Online (Sandbox Code Playgroud)

python namespaces pickle

7
推荐指数
1
解决办法
1869
查看次数

标签 统计

python ×2

namespaces ×1

pickle ×1

sqlalchemy ×1