Q1:
我编写了一个类来简化 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)
...
这是为什么?
第二季度
根据文档,db_close 应该在 db_open 调用之后调用吗?如果在命令函数的最后一行调用它,则会引发错误。
平台信息:
- 东方数据库版本:2.2.20
- pyorient 版本:1.5.5
- Python版本:3.6.0
- 操作系统:Windows 10 64x