Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 27, 2022 17:28:26

vov_kin
Зарегистрирован: 2022-01-27
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Многозначные поля

Возможно ли на Алхимии описать таблицу, в которой поле одного из столбцов будет списком (желательно переменной длинны)?

Офлайн

#2 Янв. 29, 2022 07:16:34

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4124
Репутация: +  252  -
Профиль   Отправить e-mail  

Многозначные поля

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

2. Вообще если вы не собираетесь вести поиск по списку то значение может быть blob Ну и храните там что хотите.

3. Есть базы данных типа postgress в которых могут в полях могут храниться json. https://docs.sqlalchemy.org/en/14/dialects/postgresql.html Но надо отдавать себе отчет в том что основная цель алхимии добиться независимости от СУБД. Используя такие фичи вы независимость сразу хороните.

Есть NOSQL СУБД в которых сложные поля норма. Например redis.mongodb. В них работа с такими сущностями гораздо проще чем в реляционных базах. Очевидно у них свои движки. Алхимия к этому никак не применима.



Офлайн

#3 Янв. 29, 2022 08:32:28

vov_kin
Зарегистрирован: 2022-01-27
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Многозначные поля

Спасибо, 1 - не подходит, мне нужно, чтобы в поле можно было хранить список целых чисел, альтернатива 3 варианту: хранить в поле текстовой строке, которую преобразовывать в список, что-то делать, потом опять в строку и назад в ячейку, в blob можно прыгать в список и назад?
Если в списке 1000000 целых чисел, возможно ли преобразования строка-список-строка делать без перебора элементов, сразу (учитывая однородность данных)?

Офлайн

#4 Янв. 29, 2022 09:41:21

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 8541
Репутация: +  762  -
Профиль   Отправить e-mail  

Многозначные поля

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



Офлайн

#5 Янв. 29, 2022 16:10:35

vov_kin
Зарегистрирован: 2022-01-27
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Многозначные поля

В базе данных храни адрес файла. В файле храни числа. Файл храни вообще отдельно.

Это медленно и много файлов

Офлайн

#6 Фев. 1, 2022 19:13:36

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4124
Репутация: +  252  -
Профиль   Отправить e-mail  

Многозначные поля

vov_kin
Это медленно и много файлов
Вот уже горячее.
Вы бы сообщили
  • какой у вас движок СУБД.
  • Какие у вас требования к этой записи (поменять отдельные значения, заменить все и т.п.)
  • Про однородность списка вообще непонятно. В питоне списки не бывают однородными, как вы собрались это учитывать?
  • Сколько будет записей, какой их размер и т.п. Идея хранить в одной записи таблицы 4-8 мегабайт данных крайне хреновая.

Я к сожаленю любитель взглянуть на задачу сверху и сказать что при ином подходе вам бы вообще не пришлось бороться с этими проблемами.

Попробуйте описать задачу вцелом. Может вам и вообще базы данных не нужны!



Офлайн

#7 Фев. 5, 2022 08:25:20

vov_kin
Зарегистрирован: 2022-01-27
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Многозначные поля

doza_and
Задача в целом - новая база данных, в которой в определенных столбцах хранятся списки целых чисел (что значит “В питоне списки не бывают однородными”? - если весь список состоит из однотипных данных, разве он не однородный?)

Где почитать про создание движков СУБД?

Офлайн

#8 Фев. 5, 2022 09:49:56

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4124
Репутация: +  252  -
Профиль   Отправить e-mail  

Многозначные поля

vov_kin
разве он не однородный?)
Вы понятие однородности (homogenius) видели хоть в одном учебнике по питону?

vov_kin
если весь список состоит из однотипных данных,
В любой момент в такой список можно добавить данные другого типа. Сам язык не дает никаких гарантий и никак не учитывает однородность.

Сравните:
В отличии от питона в С массив это последовательность элементов одинакового типа и в C в языке не предусмотрены последовательностей элементов разного типа.



Офлайн

#9 Фев. 5, 2022 23:27:22

vov_kin
Зарегистрирован: 2022-01-27
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Многозначные поля

Нет, питоновскую однородность я не понял.

doza_and
В любой момент в такой список можно добавить данные другого типа. Сам язык не дает никаких гарантий и никак не учитывает однородность.

Это список индексов, и его пополняет программа, гарантию должен дать программист.

Подскажите: на Xubuntu 18.04 можно ли установить последний PyChatm если машина на 32 бита? Брайн что-то говорит про самостоятельную компиляцию под 32.

Офлайн

#10 Фев. 5, 2022 23:28:21

vov_kin
Зарегистрирован: 2022-01-27
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Многозначные поля

Нет, питоновскую однородность я не понял.

doza_and
В любой момент в такой список можно добавить данные другого типа. Сам язык не дает никаких гарантий и никак не учитывает однородность.

Это список индексов, и его пополняет программа, гарантию должен дать программист.

Подскажите: на Xubuntu 18.04 можно ли установить последний PyChatm если машина на 32 бита? Брайн что-то говорит про самостоятельную компиляцию под 32.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version