TypeError: объект OrientRecord не поддерживает индексирование

Я пытаюсь извлечь записи из ориентированной БД с помощью pyorient и вот мой запрос:

query =  "SELECT value FROM (SELECT expand(Elements) FROM dataset) WHERE type = 'XXX'"
records = client.command(query)

и все работает нормально. Когда я пытаюсь напечатать записи, вот что я получаю:

record = records[0]
print type(record)
<class 'pyorient.otypes.OrientRecord'>


print record
{{'value': 'Name'},'version':0,'rid':'#-2:0'}

и так как мне просто нужно извлечьName' от record, Я старался:

print record[0]

и получил

TypeError: 'OrientRecord' object does not support indexing

и вот результаты repr:

print(repr(record))
<pyorient.otypes.OrientRecord object at 0x7fdcdb531ad0>

1 ответ

Решение

Посмотрев исходный код, я понял, как получить доступ к различным частям данных из строкового представления:

>>> x
<pyorient.otypes.OrientRecord object at 0x105789e48>
>>> print(x)
{{'value': 'Name'},'version':0,'rid':'#-2:0'}
>>> x.oRecordData
{'value': 'Name'}
>>> x.value #allow for access in the oRecordData as attributes?
'Name'
>>> x._version, x._rid #other values in string representation
(0, '#-2:0')

Я довольно разочарован тем, что строковое представление не сделало это очевидным. Во всяком случае, я думаю, что вы хотите x.oRecordData один.

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