Найти - Пользователи
Полная версия: Запись в базу определенных данных
Начало » Python для новичков » Запись в базу определенных данных
1
Nescafe
Привет всем! Есть такая задача. Парсить 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}" писать в другую.

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

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

У меня практически всегда получается что re лучше использовать.
Nescafe
Парсер уже работает. На выходе имею
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}
и так далее.

This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB