Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 15, 2017 10:49:02

oleg.p
Зарегистрирован: 2017-02-03
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Порядок полей в модели и базе данных

Заметил одну особенность работы Django с бд:

Если имеется модель:
class Units(models.Model):
status = models.PositiveSmallIntegerField(default=0)
name = models.CharField(max_length=64)
price = models.IntegerField(default=0)

То после миграции в базу порядок расположения полей будет другой:
name
price
status

Фактически, Django выстроил их так: вначале текстовые поля, затем числовые в порядке уменьшения разрядности.

Кто-нибудь знает, на чём основана такая логика работы?
Есть ли возможность запретить Django менять порядок полей в базе?

Офлайн

#2 Фев. 15, 2017 11:27:46

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Порядок полей в модели и базе данных

oleg.p
А какой для вас смысл имеет порядок полей в БД?



Офлайн

#3 Фев. 15, 2017 11:46:31

oleg.p
Зарегистрирован: 2017-02-03
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Порядок полей в модели и базе данных

FishHook
oleg.pА какой для вас смысл имеет порядок полей в БД?

Вышеобозначенная модель исключительно для примера. В реальной базе в таблицах количество полей достигает нескольких десятков, и отрабатывать sql-запросы существенно проще, когда чередование полей основано на логике, а не на прихотях фреймворка.

Офлайн

#4 Фев. 15, 2017 12:22:43

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Порядок полей в модели и базе данных

oleg.p
и отрабатывать sql-запросы существенно проще, когда чередование полей основано на логике, а не на прихотях фреймворка.
В смысле “проще отрабатывать запросы”, потрудитесь выражать свои мысли яснее.



Офлайн

#5 Фев. 15, 2017 12:28:24

oleg.p
Зарегистрирован: 2017-02-03
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Порядок полей в модели и базе данных

FishHook

Через консоль базы данных

Офлайн

#6 Фев. 15, 2017 13:15:26

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Порядок полей в модели и базе данных

oleg.p
Через консоль базы данных
Что “через консоль базы данных”?

Слушайте, мы в первом классе что ли? Вы можете четко формулировать свои посты?



Офлайн

#7 Фев. 15, 2017 15:50:28

oleg.p
Зарегистрирован: 2017-02-03
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Порядок полей в модели и базе данных

FishHook
Что “через консоль базы данных”?

Слушайте, мы в первом классе что ли? Вы можете четко формулировать свои посты?

Если не можете понять, для чего нужно, то тогда ответ простой: потому что надо - это самая четкая формулировка в данном случае.

И давайте не будем разводить флуд и вернемся к самому вопросу:
Есть ли возможность запретить Django менять порядок полей в базе при создании таблиц?

Офлайн

#8 Фев. 15, 2017 16:45:11

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Порядок полей в модели и базе данных

oleg.p
потому что надо
Это не ответ на вопрос на техническом форуме.
СУБД не гарантируют возврат столбцов в каком бы то ни было порядке. Все запросы на изменение данных имеют не позиционную структуру, а именованную. В селектах возвращаемые столбцы и их порядок указываются явно.







Я прошу дать пример, когда вам нужен порядок столбцов.

ПС
Если вы чего-то не знаете и не умеете, ваша задача научиться и разобраться, а не вставать в позицию “я хочу и все тут”, с такими требованиями идите к черту, вам никто ничего не должен.



Офлайн

#9 Фев. 15, 2017 17:41:22

oleg.p
Зарегистрирован: 2017-02-03
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Порядок полей в модели и базе данных

FishHook
FishHook
Я прошу дать пример, когда вам нужен порядок столбцов.

Когда работаешь через консоль с таблицами с большим количеством полей (20 и выше), совершенно неудобно, когда поля идут в хаотическом порядке.

В качестве примера можно взять любую медицинскую базу данных, где в таблице параметры человека:
ид, имя, фамилия, год, вес, рост, размер глаза, цвет глаз, размер мошонки, …

Открываем консоль (для тех, кто не понял, в командной строке вводим mysql, psql и т.п),
затем: select * from people;
Теперь если поля прописаны грамотно, то получишь красивую табличку.
А теперь представьте вид таблицы, если поля перемешать? Очень грустно видеть имя, затем размер мошонки, потом размер глаз, затем фамилию…
Некоторые могут сказать: перечисли нужные поля вместо *… но опять обращаю внимание - речь от больших таблицах, и перечислять поля заколебёшься.

Офлайн

#10 Фев. 15, 2017 20:36:51

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Порядок полей в модели и базе данных

oleg.p
Кто-нибудь знает, на чём основана такая логика работы?
обязательно знает, думаю Вы и сами сможете узнать, исходники открыты и доступны
oleg.p
Есть ли возможность запретить Django менять порядок полей в базе?
Думаю нет.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version