Обработка результатов запроса eXist-db, сделанного с помощью Python

Я сделал следующий код в python, чтобы получить ответ на запрос в XML, хранящийся в eXist-db. Я получаю значение, но проблема заключается в типе «мгновенный», как указано в выводе ниже. Вот мой код:

from eulexistdb import db
class TestExist:
    def __init__(self):
        self.db = db.ExistDB("http://localhost:8899/exist/")   

    def get_res(self,query):
        #result = list()
        res = self.db.executeQuery(query)
        hits = self.db.getHits(res)        
        for i in range(hits):
            print self.db.retrieve(res,i)
            print type(self.db.retrieve(res,i))
xquery = '''
let $x:= doc("/db/sample/books.xml")
return $x/bookstore/book/price/text()'''
a = TestExist()
a.get_res(xquery)

Теперь запрос работает нормально, и результат тоже печатается как:

30.00
<type 'instance'>
29.99
<type 'instance'>
49.99
<type 'instance'>
39.95
<type 'instance'>

Я хочу вернуть значение, добавленное в список «результат». Я пытался преобразовать тип, но не смог. Как мне этого добиться?


person Pant    schedule 14.08.2013    source источник
comment
Вы заявляете, я получаю значение, но проблема в том, что . Пожалуйста, отредактируйте свой пост, чтобы закончить это предложение.   -  person Joe Wicentowski    schedule 14.08.2013


Ответы (1)


Это странно — в документах говорится, что db.retrieve функция должна возвращать строку, но, видимо, это не так. В любом случае, поскольку оператор печати получает из него полезную строку, один из них должен работать:

result.append(str(self.db.retrieve(res,i)))

or

result.append(repr(self.db.retrieve(res,i)))

Просто раскомментируйте строку #result = list() и добавьте один из приведенных выше символов в цикл for.

person Brionius    schedule 14.08.2013
comment
приведение к str() сработало. Так глупо, что я не подумал об этом. Я хотел, чтобы значение float было из него. Но функция repr() не работала, так как в результате выводятся такие данные, как ['экземпляр xmlrpclib.Binary по адресу 0x02258C10›', 'экземпляр xmlrpclib.Binary по адресу 0x02258D50›', 'экземпляр xmlrpclib.Binary по адресу 0x02258198›', '‹xmlrpclib.Binary экземпляр по адресу 0x02258620›'] - person Pant; 14.08.2013
comment
Отлично - рад, что это сработало. Если вы считаете, что это решило вашу проблему, щелкнув галочку «Принять» рядом с ответом, другим пользователям будет полезно узнать, что это сработало. - person Brionius; 14.08.2013