@pcdesign

Как передать результат запроса select из mysql в xml?

@app.route('/getxml')
def getxml():
    g.cur.execute("""select * from table""")
    o = g.cur.fetchall()


В переменной "о" лежит результат запроса select.
Как все это хозяйство превратить в XML?
Посоветуйте, плз, модуль, чтобы сделать это без ручных темплейтов и малой кровью.

P.S.: Python 3.4.1

P.S.2: И желательно обойтись малым кол-вом строк.
1) bash
mysql --xml -e 'use dbname; SELECT * from tb'
Всего одна строка.

2) perl
use XML::Dumper;
print new XML::Dumper->pl2xml($o);

Всего две строки.
$o - это fetchall_arrayref, ну тоже самое что и g.cur.fetchall() в Python
  • Вопрос задан
  • 2607 просмотров
Пригласить эксперта
Ответы на вопрос 1
winordie
@winordie
Лучшая документация -- исходники
Велосипед
def fetchall_xml(cur, pretty_print=True):
    import lxml.etree

    fields_value = cur.fetchall()
    fields_name = tuple(i[0] for i in cur.description)

    elements = lxml.etree.Element('elements')
    for el in fields_value:
        element = lxml.etree.SubElement(elements, 'element', attrib={'foo': 'bar'})
        for j in range(len(fields_name)):
            lxml.etree.SubElement(element, str(fields_name[j])).text = '{}'.format(el[j])
    return lxml.etree.tounicode(elements, pretty_print=pretty_print)


def main():
    conn = sqlite3.connect('compare.db')
    cur = conn.cursor()
    cur.execute('SELECT * FROM PRODUCT_EXCHANGERATE')

    xml = fetchall_xml(cur)
    print(xml)

main()
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы