我编写了一个简化了OrientDB连接用法的类。部分代码如:
class DbDelegate(object):
def __init__(self, ...):
self._cn = OrientDB(..)
...
def command(self, *args):
self._cn.db_open(...)
return self._cn.command(*args)
def create_db(self):
self._cn.connect(self.user_name, self.user_password)
self._cn.db_create(self.db_name)
...
create_db函数的“self._cn.connect”行将异常引发为:
pyorient.exceptions.PyOrientConnectionException: Socket Error [WinError 10038] Socket operation on nonsocket.
如果根本没有调用create_db,则调用命令函数,它运行正常。 现在这些代码可以运行,
class DbDelegate(object):
def __init__(self, ...):
self._cn = OrientDB(..)
...
def command(self, *args):
self._cn = OrientDB(..)
self._cn.db_open(...)
return self._cn.command(*args)
def create_db(self):
self._cn = OrientDB(..)
self._cn.connect(self.user_name, self.user_password)
self._cn.db_create(self.db_name)
...
为什么?
根据doc,db_cln调用后应该调用db_close吗?如果在命令函数的最后一行调用它,则会引发错误。
答案 0 :(得分:0)
原来这是一个小问题。简而言之,我只是在错误的地方调用db_close。