2016-06-08 2 views
5

Я хочу преобразовать базу данных MySQL> 1mn в базу данных графа, потому что это сильно привязанные данные сетевого типа. У бесплатной версии Neo4J были некоторые ограничения, над которыми я думал, что могу столкнуться, поэтому я установил OrientDB (Community 2.2.0) (на Ubuntu Server 16.04) и получил его работу. Теперь мне нужно получить к нему доступ из Python (3.5.1+), поэтому я пытаюсь использовать pyorient (1.5.2). (Я пытался TinkerPop, так как я в конечном счете хочу использовать Gremlin, и не могли получить Gremlin консоль, чтобы поговорить с OrientDB.)Доступ к OrientDB из Python

Следующий простой код Python, чтобы подключиться к одному из тестовых графиков в OrientDB:

import pyorient 

username="user" 
password="password" 

client = pyorient.OrientDB("localhost", 2424) 
session_id = client.connect(username, password) 

print("SessionID=",session_id) 

db_name="GratefulDeadConcerts" 

if client.db_exists(db_name, pyorient.STORAGE_TYPE_MEMORY): 
    print("Database",db_name,"exists") 
    client.db_open(db_name, username, password) 
else: 
    print("Database",db_name,"doesn't exist") 

дает странные ошибки:

SessionID= 27 
Database GratefulDeadConcerts exists 
Traceback (most recent call last): 
    File "FirstTest.py", line 18, in <module> 
    client.db_open(db_name, username, password) 
    File "/home/tom/MyProgs/TestingPyOrient/env/lib/python3.5/site-packages/pyorient/orient.py", line 379, in db_open 
    .prepare((db_name, user, password, db_type, client_id)).send().fetch_response() 
    File "/home/tom/MyProgs/TestingPyOrient/env/lib/python3.5/site-packages/pyorient/messages/database.py", line 141, in fetch_response 
    info = OrientVersion(release) 
    File "/home/tom/MyProgs/TestingPyOrient/env/lib/python3.5/site-packages/pyorient/otypes.py", line 202, in __init__ 
    self._parse_version(release) 
    File "/home/tom/MyProgs/TestingPyOrient/env/lib/python3.5/site-packages/pyorient/otypes.py", line 235, in _parse_version 
    self.build = int(self.build) 
ValueError: invalid literal for int() with base 10: '0 (build [email protected]; 2016' 

кто-нибудь знает, что это такое и как я могу это исправить? Должен ли я использовать TinkerPop вместо этого? Если так, я отправлю отдельный вопрос о моей борьбе с этим.

+0

Привет @TomG, я попробовал ваш случай, и я получил вашу же ошибку с ODB сообщества 2.2.0, но не с 2.1.x версии. Не могли бы вы открыть проблему в [Github] (https://github.com/orientechnologies/orientdb/issues)? – LucaS

+0

также сталкивается с этим ... мы надеемся, что дальнейшее исследование будет проведено в рамках [выпуск 200] (https://github.com/mogui/pyorient/issues/200) –

ответ

2

Сначала я получил ошибку, но после обновления Pyorient до последней версии 1.5.4 я не получаю ошибок.

$ python test.py 
('SessionID=', 6) 
('Database', 'GratefulDeadConcerts', 'exists') 

$ python --version 
Python 2.7.11 
+0

У меня просто не было идеи, что может быть новая версия на pip ... ist работает с 1.5.4, спасибо большое! (Будет награждать награду, когда она будет разблокирована) –

Смежные вопросы