Найти - Пользователи
Полная версия: Создание таблицы из модели "на лету"
Начало » Django » Создание таблицы из модели "на лету"
1
eolizer
Здравствуйте!

Поскольку в Джанго и Питоне я ещё “зелен”, сразу прошу прощения за, возможно, глупые и некорректные вопросы!

Из прочитаного на djbook я совсем не понял, существует ли возможность создавать таблицы “на лету”. То есть, описав единожды структуру в модели , мне нобходимо создавать таблицы с этой структурой в процессе выполнения программы.

Простой пример (он же - моя задача):
необходимо опрашивать некие сетевые устройства и опросив их создать для КАЖДОГО устройства таблицу, если она ещё не существует, которую в свою очередь заполнить записями о состоянии портов данного устройства.
Не хочется делать это “по-тупому”, уж очень стройна концепция ORM

Заранее спасибо!
regall
eolizer
Из прочитаного на djbook я совсем не понял, существует ли возможность создавать таблицы “на лету”. То есть, описав единожды структуру в модели , мне нобходимо создавать таблицы с этой структурой в процессе выполнения программы.
Верно.
eolizer
необходимо опрашивать некие сетевые устройства и опросив их создать для КАЖДОГО устройства таблицу
Зачем для каждого устройства создавать таблицу? Достаточно 1-й таблицы для хранения записей о состоянии портов с внешним ключем на таблицу, которая хранит устройства, например.
eolizer
regall
Зачем для каждого устройства создавать таблицу?
Я тоже об этом думал, но я не волен в выборе решения, так как пишу лишь дополнение к существующей системе, а менять всю структуру и логику = делать всё с ноля. :)

И вобще, нужно в принципе разобраться. Задача ведь вполне даже типичная. Опустить руки и сдаться - не совсем спортивно :) Хотя, если это окажеться самым разумным решением ….
regall
eolizer
И вобще, нужно в принципе разобраться. Задача ведь вполне даже типичная. Опустить руки и сдаться - не совсем спортивно Хотя, если это окажеться самым разумным решением
eolizer
Задача ведь вполне даже типичная
“Правильно выбранные структуры данных - половина решения задачи…” © Никлаус Вирт.
eolizer
Опустить руки и сдаться - не совсем спортивно Хотя, если это окажеться самым разумным решением
Мне кажется, что в данном случае ORM вам не поможет. Если вам не нужен такой прям навороченный веб портал, пользуйтесь Bottle, или werkzeug + SQL.
maxwell
eolizer, а зачем вам N таблиц с одинаковыми структурами?
regall
maxwell, читайте внимательнее, у человека уже есть некая инфраструктура, где структура БД такая, и переделывать нельзя.
gonandriy
а если руководствуясь етим:
http://www.djangoproject.com/documentation/models/custom_columns/

перед тем как записывать данные в таблицу (вызызвать .save()) сделать чтото такое:
Device.Meta.db_table = ‘appropriate_data_table’

где имя вашей модели
maxwell
regall, Я это прочёл, я интересуюсь в принципе, зачем? Т.е. какая у них задача стояла?

В принципе, то что хочет автор можно назвать horizontal database partitioning.
Обычно для этого используются реляционные БД.

По теме — http://code.djangoproject.com/wiki/DynamicModels но не уверен что работает на 1.2 (т.к. мультидб добавили)
eolizer
maxwell
В принципе, то что хочет автор можно назвать horizontal database partitioning.
Совершенно верно. Дело в том, что портов на устройствах (суммарно) очень много. Делая записи в одну большую таблицу, она (таблица) выростала бы ежедневно на 3 МБайта. И это при опросе 1 раз в сутки. А если больше ??? А вот выборка из базы производится как правило в разрезе устройства. Есть ли смысл лопатить одну большую таблицу, что бы выбрать данные по одному девайсу за определённый период …? Да и скорость такого “лопатинга” - тоже вопрос,
maxwell
По теме — http://code.djangoproject.com/wiki/DynamicModels но не уверен что работает на 1.2 (т.к. мультидб добавили)
Спасибо! Очень похоже на то, что нужно. Читаю.
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