使用pyorient OrientDB / connect / db_open感到困惑

时间:2017-08-07 09:35:07

标签: python orientdb pyorient

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)
        ...

为什么?

Q2

根据doc,db_cln调用后应该调用db_close吗?如果在命令函数的最后一行调用它,则会引发错误。

平台信息:

  • OrientDB版本:2.2.20
  • pyorient版本:1.5.5
  • Python版本:3.6.0
  • 操作系统:Windows 10 64x

1 个答案:

答案 0 :(得分:0)

原来这是一个小问题。简而言之,我只是在错误的地方调用db_close。