我在我的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 rollback在http:// 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) 当我使用pickle和unittest时出错了.
我写了3个程序文件:
实际代码分别如下.
#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)