Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 30, 2010 12:15:05

eolizer
От:
Зарегистрирован: 2010-11-30
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Создание таблицы из модели "на лету"

Здравствуйте!

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

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

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

Заранее спасибо!



Офлайн

#2 Ноя. 30, 2010 12:19:43

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Создание таблицы из модели "на лету"

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



Офлайн

#3 Ноя. 30, 2010 12:37:20

eolizer
От:
Зарегистрирован: 2010-11-30
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Создание таблицы из модели "на лету"

regall
Зачем для каждого устройства создавать таблицу?
Я тоже об этом думал, но я не волен в выборе решения, так как пишу лишь дополнение к существующей системе, а менять всю структуру и логику = делать всё с ноля. :)

И вобще, нужно в принципе разобраться. Задача ведь вполне даже типичная. Опустить руки и сдаться - не совсем спортивно :) Хотя, если это окажеться самым разумным решением ….



Офлайн

#4 Ноя. 30, 2010 12:55:38

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Создание таблицы из модели "на лету"

eolizer
И вобще, нужно в принципе разобраться. Задача ведь вполне даже типичная. Опустить руки и сдаться - не совсем спортивно Хотя, если это окажеться самым разумным решением
eolizer
Задача ведь вполне даже типичная
“Правильно выбранные структуры данных - половина решения задачи…” © Никлаус Вирт.
eolizer
Опустить руки и сдаться - не совсем спортивно Хотя, если это окажеться самым разумным решением
Мне кажется, что в данном случае ORM вам не поможет. Если вам не нужен такой прям навороченный веб портал, пользуйтесь Bottle, или werkzeug + SQL.



Офлайн

#5 Ноя. 30, 2010 14:44:42

maxwell
От:
Зарегистрирован: 2008-08-26
Сообщения: 111
Репутация: +  0  -
Профиль   Отправить e-mail  

Создание таблицы из модели "на лету"

eolizer, а зачем вам N таблиц с одинаковыми структурами?



Офлайн

#6 Ноя. 30, 2010 15:08:42

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Создание таблицы из модели "на лету"

maxwell, читайте внимательнее, у человека уже есть некая инфраструктура, где структура БД такая, и переделывать нельзя.



Офлайн

#7 Ноя. 30, 2010 16:06:11

gonandriy
От:
Зарегистрирован: 2010-06-23
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Создание таблицы из модели "на лету"

а если руководствуясь етим:
http://www.djangoproject.com/documentation/models/custom_columns/

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

где имя вашей модели



Офлайн

#8 Ноя. 30, 2010 16:08:29

maxwell
От:
Зарегистрирован: 2008-08-26
Сообщения: 111
Репутация: +  0  -
Профиль   Отправить e-mail  

Создание таблицы из модели "на лету"

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

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

По теме — http://code.djangoproject.com/wiki/DynamicModels но не уверен что работает на 1.2 (т.к. мультидб добавили)



Отредактировано (Ноя. 30, 2010 16:09:01)

Офлайн

#9 Ноя. 30, 2010 16:19:20

eolizer
От:
Зарегистрирован: 2010-11-30
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Создание таблицы из модели "на лету"

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



Отредактировано (Ноя. 30, 2010 16:20:12)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version