Форум сайта python.su
Здравствуйте!
Поскольку в Джанго и Питоне я ещё “зелен”, сразу прошу прощения за, возможно, глупые и некорректные вопросы!
Из прочитаного на djbook я совсем не понял, существует ли возможность создавать таблицы “на лету”. То есть, описав единожды структуру в модели , мне нобходимо создавать таблицы с этой структурой в процессе выполнения программы.
Простой пример (он же - моя задача):
необходимо опрашивать некие сетевые устройства и опросив их создать для КАЖДОГО устройства таблицу, если она ещё не существует, которую в свою очередь заполнить записями о состоянии портов данного устройства.
Не хочется делать это “по-тупому”, уж очень стройна концепция ORM
Заранее спасибо!
Офлайн
eolizerВерно.
Из прочитаного на djbook я совсем не понял, существует ли возможность создавать таблицы “на лету”. То есть, описав единожды структуру в модели , мне нобходимо создавать таблицы с этой структурой в процессе выполнения программы.
eolizerЗачем для каждого устройства создавать таблицу? Достаточно 1-й таблицы для хранения записей о состоянии портов с внешним ключем на таблицу, которая хранит устройства, например.
необходимо опрашивать некие сетевые устройства и опросив их создать для КАЖДОГО устройства таблицу
Офлайн
regallЯ тоже об этом думал, но я не волен в выборе решения, так как пишу лишь дополнение к существующей системе, а менять всю структуру и логику = делать всё с ноля. :)
Зачем для каждого устройства создавать таблицу?
Офлайн
eolizer
И вобще, нужно в принципе разобраться. Задача ведь вполне даже типичная. Опустить руки и сдаться - не совсем спортивно Хотя, если это окажеться самым разумным решением
eolizer“Правильно выбранные структуры данных - половина решения задачи…” © Никлаус Вирт.
Задача ведь вполне даже типичная
eolizerМне кажется, что в данном случае ORM вам не поможет. Если вам не нужен такой прям навороченный веб портал, пользуйтесь Bottle, или werkzeug + SQL.
Опустить руки и сдаться - не совсем спортивно Хотя, если это окажеться самым разумным решением
Офлайн
eolizer, а зачем вам N таблиц с одинаковыми структурами?
Офлайн
maxwell, читайте внимательнее, у человека уже есть некая инфраструктура, где структура БД такая, и переделывать нельзя.
Офлайн
а если руководствуясь етим:
http://www.djangoproject.com/documentation/models/custom_columns/
перед тем как записывать данные в таблицу (вызызвать .save()) сделать чтото такое:
Device.Meta.db_table = ‘appropriate_data_table’
где имя вашей модели
Офлайн
regall, Я это прочёл, я интересуюсь в принципе, зачем? Т.е. какая у них задача стояла?
В принципе, то что хочет автор можно назвать horizontal database partitioning.
Обычно для этого используются реляционные БД.
По теме — http://code.djangoproject.com/wiki/DynamicModels но не уверен что работает на 1.2 (т.к. мультидб добавили)
Отредактировано (Ноя. 30, 2010 16:09:01)
Офлайн
maxwellСовершенно верно. Дело в том, что портов на устройствах (суммарно) очень много. Делая записи в одну большую таблицу, она (таблица) выростала бы ежедневно на 3 МБайта. И это при опросе 1 раз в сутки. А если больше ??? А вот выборка из базы производится как правило в разрезе устройства. Есть ли смысл лопатить одну большую таблицу, что бы выбрать данные по одному девайсу за определённый период …? Да и скорость такого “лопатинга” - тоже вопрос,
В принципе, то что хочет автор можно назвать horizontal database partitioning.
maxwellСпасибо! Очень похоже на то, что нужно. Читаю.
По теме — http://code.djangoproject.com/wiki/DynamicModels но не уверен что работает на 1.2 (т.к. мультидб добавили)
Отредактировано (Ноя. 30, 2010 16:20:12)
Офлайн