Запутаться с использованием Pyorient OrientDB/connect/db_open

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

Строка "self._cn.connect" функции create_db вызывает исключение как:

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

Согласно документу, db_close должен вызываться после вызова db_open? Если вызвать его в последней строке командной функции, это вызовет ошибку.

Информация о платформе:

  • Версия OrientDB: 2.2.20
  • пиориентская версия: 1.5.5
  • Версия Python: 3.6.0
  • ОС: Windows 10 64x

1 ответ

Оказалось, это небольшая проблема. Короче, я просто вызвал db_close не в том месте.

Другие вопросы по тегам