2016-06-08 17 views
5

Voglio convertire un> database MySQL record da 1mn in un database di diagrammi, perché si tratta di dati di tipo di rete fortemente collegati. La versione gratuita di Neo4J aveva alcune restrizioni che pensavo potessi sbattere contro, quindi ho installato OrientDB (Comunità 2.2.0) (su Ubuntu Server 16.04) e l'ho fatto funzionare. Ora ho bisogno di accedervi da Python (3.5.1+), quindi sto cercando pyorient (1.5.2). (Ho provato TinkerPop dal momento che alla fine voglio usare Gremlin, e non poteva ottenere la console gremlin di parlare con l'OrientDB.)Accesso a OrientDB da Python

Il seguente codice Python semplice, per la connessione a uno dei grafici di prova in 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") 

dà un errore di strano:

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' 

qualcuno sa di cosa si tratta e come posso risolvere il problema? Dovrei davvero usare TinkerPop invece? Se è così, pubblicherò una domanda separata sulla mia lotta con quello.

+0

Ciao @TomG, ho provato il vostro caso e ho ottenuto il vostro stesso errore con ODB Comunità 2.2.0 ma non con la versione 2.1.x. Potresti aprire un problema su [Github] (https://github.com/orientechnologies/orientdb/issues)? – LucaS

+0

anche di fronte a questo ... si spera ulteriormente indagato in [numero 200] (https://github.com/mogui/pyorient/issues/200) –

risposta

2

In primo luogo ho ricevuto l'errore, ma dopo aver aggiornato Pyorient all'ultima versione 1.5.4 non ottengo errori.

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

$ python --version 
Python 2.7.11 
+0

Yay, semplicemente non avevo l'idea che ci potesse essere una versione più recente su pip ... sta lavorando con 1.5.4, grazie mille! (Assegnerà taglie quando è sbloccato) –