Найти - Пользователи
Полная версия: Многозначные поля
Начало » Базы данных » Многозначные поля
1
vov_kin
Возможно ли на Алхимии описать таблицу, в которой поле одного из столбцов будет списком (желательно переменной длинны)?
doza_and
Не совсем ясно что вы хотите.
Если буквально понимать то это невозможно в силу ограничений реляционной модели данных. По простому - такого не бывает в базах данных, значит и в алхимии не может быть.
Но
1. С логической точки зрения это отношение один ко многим и оно описано в любом букваре по базам данных. В простейшем случае повторяете пару ключ значение столько раз какова длина вашего списка.

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

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

Есть NOSQL СУБД в которых сложные поля норма. Например redis.mongodb. В них работа с такими сущностями гораздо проще чем в реляционных базах. Очевидно у них свои движки. Алхимия к этому никак не применима.
vov_kin
Спасибо, 1 - не подходит, мне нужно, чтобы в поле можно было хранить список целых чисел, альтернатива 3 варианту: хранить в поле текстовой строке, которую преобразовывать в список, что-то делать, потом опять в строку и назад в ячейку, в blob можно прыгать в список и назад?
Если в списке 1000000 целых чисел, возможно ли преобразования строка-список-строка делать без перебора элементов, сразу (учитывая однородность данных)?
py.user.next
vov_kin
хранить в поле текстовой строке, которую преобразовывать в список, что-то делать, потом опять в строку и назад в ячейку
В базе данных храни адрес файла. В файле храни числа. Файл храни вообще отдельно.
vov_kin
В базе данных храни адрес файла. В файле храни числа. Файл храни вообще отдельно.

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

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

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

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

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

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

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

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

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

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

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

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