2014-10-15 2 views
0

Я работаю над инструментом поиска, который запрашивает MySQL, находит UniqueID и связывает его с несколькими другими таблицами. Создание переменных и текста в моем окне с миниатюрами. Все это легко. Я столкнулся с областью, где выбранная запись в SQL является XML-файлом только как значение вместо файла.Запрос MySQL, где XML является значением

Взаимодействующе, я могу работать с этим XML без проблем, когда я сохраняю его как файл. И прочитайте его снова в parseer elementTree. Но как только я попробую и xml разобрать список, который я получаю из метода cursor.fetchall(), я получаю ошибки, о которых можно только разобрать из файла или буферизованной строки, а не списка. Я новичок в XML и MySQL (в python), любая помощь будет принята с благодарностью!

Вкратце, я пытаюсь разобрать список как XML.

Спасибо!

ответ

0

Ваше описание сообщения об ошибке (к несчастью, вы не указали трассировку ошибки) указывает, что вы получаете список значений. Это ожидаемый результат при запуске fetchall(). Он вернет список возвращаемых строк и строки будут похожими на список объектами с полями. Это применимо, даже если есть только одна строка или только одно возвращаемое значение.

Вы должны

  • использования fetchone()
  • использовать индекс: result[0]
  • итерацию по результату: for row in result:

И использовать индекс в строке, чтобы получить поле.

for row in result: 
    parser_function(row[0]) 
+0

К сожалению, методы fetchone() и fetchall() дают одинаковый результат. Какой список и первый элемент - весь XML. Ian способен преобразовывать список в строку, а затем разделять («\\ n») строку в настоящий список. Я могу получить значения через regex отсюда, но Am по-прежнему ищет способ анализа в XML, это немного чище. – tink3r

0

Решенный!

c.execute("SQLQUERY") 
result = c.fetchone() 
tree = ET.fromstring(result[0]) 
tree 
<Element 'cut' at 0x10f3cd5500> 

Использование результата не сработало, должен быть результат [0]. Я упустил это из виду, потому что весь кортеж состоял из 1 элемента, содержащего XML-строку.

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