Запутаться с использованием 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 не в том месте.