-1

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
4

1 回答 1

0

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

于 2017-08-07T14:44:14.843 回答