Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 17, 2015 15:38:23

Nescafe
Зарегистрирован: 2015-04-17
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Запись в базу определенных данных

Привет всем! Есть такая задача. Парсить xml-файл и писать в базу данные. Но данные надо писать специфично, в разные таблицы.

Пример - есть файл типа

<sensor ID=“{18F46E2E-2469-4367-8F9E-8B32A9648A44}” >
<stat var=“123” var2=“456” ID=“{18F46E2E-2469-4367-8F9E-8B32A9648A44}”>
<stat var=“123” var2=“456” ID=“{18F46E2E-2469-4367-8F9E-8B32A9648A44}”>
<stat var=“123” var2=“456” ID=“{18F46E2E-2469-4367-8F9E-8B32A9648A44}”>
</sensor>
<sensor ID=“{2AA7AFBB-9149-44E2-8638-EF7EA6970CAC}” >
<stat var=“123” var2=“456” ID=“{2AA7AFBB-9149-44E2-8638-EF7EA6970CAC}”>
<stat var=“123” var2=“456” ID=“{2AA7AFBB-9149-44E2-8638-EF7EA6970CAC}”>
<stat var=“123” var2=“456” ID=“{2AA7AFBB-9149-44E2-8638-EF7EA6970CAC}”>
</sensor>
Парсер вытаскивает значения stat var и var2 и ID. Нужно писать так:
Все что с ID=“{18F46E2E-2469-4367-8F9E-8B32A9648A44} писать в одну таблицу
Все что с ID=”{2AA7AFBB-9149-44E2-8638-EF7EA6970CAC}" писать в другую.

Как? )

Офлайн

#2 Апрель 17, 2015 21:06:14

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Запись в базу определенных данных

1 определитесь в какую базу будете писать.
2 Определитесь со структурой базы данных. Отсюда будет следовать метод записи и пакеты которые для этого надо использовать.
3 Парсить можно с использованием пакетов xml/lxml. Если файл всегда выглядит так как вы написали то можно вытащить данные регулярными выражениями.

lxml - сложнее код, но более корректный результат.
re - проще код и парсер на два порядка быстрее, но будут приключения при изменении формата, Трудно обработать большие файлы.

У меня практически всегда получается что re лучше использовать.



Офлайн

#3 Апрель 20, 2015 22:09:28

Nescafe
Зарегистрирован: 2015-04-17
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Запись в базу определенных данных

Парсер уже работает. На выходе имею
123 456{18F46E2E-2469-4367-8F9E-8B32A9648A44}
123 456{18F46E2E-2469-4367-8F9E-8B32A9648A44}
123 456{18F46E2E-2469-4367-8F9E-8B32A9648A44}
123 456 {2AA7AFBB-9149-44E2-8638-EF7EA6970CAC}
123 456 {2AA7AFBB-9149-44E2-8638-EF7EA6970CAC}
123 456 {2AA7AFBB-9149-44E2-8638-EF7EA6970CAC}

и т.п.


Теперь задача записать все в разные таблицы. В базе есть таблицы, под каждый ID ({2AA7…..0CAC})

например все строки
123 456 {2AA7AFBB-9149-44E2-8638-EF7EA6970CAC}
123 456 {2AA7AFBB-9149-44E2-8638-EF7EA6970CAC}
123 456 {2AA7AFBB-9149-44E2-8638-EF7EA6970CAC}
должны записаться в таблицу {2AA7AFBB-9149-44E2-8638-EF7EA6970CAC}

все строки
123 456{18F46E2E-2469-4367-8F9E-8B32A9648A44}
123 456{18F46E2E-2469-4367-8F9E-8B32A9648A44}
123 456{18F46E2E-2469-4367-8F9E-8B32A9648A44}
должны оказаться в таблице {18F46E2E-2469-4367-8F9E-8B32A9648A44}
и так далее.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version