vitus_wagner: My photo 2005 (Default)
vitus_wagner ([personal profile] vitus_wagner) wrote2020-01-05 09:37 pm

Питонистическое.

Выяснил что в стандартной библиотеке питона модуль collections, а в нем функция namedtuple. Позволяющая генерировать наборы данных с именованными полями и нулевым оверхедом. Более того named tuples - hashable, т.е. могут использоваться в качестве индекстов dict или элементов множества. И их очень удобно создавать из списков, dictionaries и тому подобных конструкций.

Теперь хочу реализацию операций реляционной алгебры над set of named tuples.
beldmit: (Программизм)

[personal profile] beldmit 2020-01-06 09:52 am (UTC)(link)
Какая разумная альтернатива ORM-ам на уровне CRUD? Собирать запрос руками? Спасибо, нафиг.
beldmit: (Default)

[personal profile] beldmit 2020-01-06 12:31 pm (UTC)(link)
У меня типичный случай - view, где показывается несколько связанных объектов, соответствующих строкам из базы из разных таблиц. Если это редактура, то редактируются, как правило, поля одного объекта, и если нескольких, то контроллер разберёт, вытащит объекты и создаст запросы через объектный интерфейс. При этом ORM ещё и прикинет, надо ли ему обновлять единичный объект, если все старые значения совпадают с новыми, кажется.
livelight: (Default)

[personal profile] livelight 2020-01-06 05:37 pm (UTC)(link)
Термином CRUD обычно называют (по крайней мере, в кровавом тырпрайзе) манипуляции объектами уровня предметной области. А как оно там должно в базу ложиться - никто обычно не хочет писать руками этот аццкий бойлерплейт, все хотят переложить эту работу на ORM.

[personal profile] bowhill 2020-01-06 08:19 pm (UTC)(link)
Объекты — концепция иерархическая и инкапсуляционная, реляционная модель — очевидно, нет. Отобразить граф иерархией никак не получится и никакая «модность» объектов не поможет.

[personal profile] kouzdra 2020-01-07 01:25 pm (UTC)(link)
Совершенно не обязательно. В OCaml (да и в Go) ничего такого особенно нет - соответствие объекта типу определяется исключительно фактической совместимостью по интерфейсу (кстати потому же в d Ocaml невозможен downcasting - для этого просто нет информации). Я кстати сильно подозреваю что упомянтое питоническое сперто как раз с Ocaml-евых объектов - там конечно оверхед не нулевой - там компилятор подбирает совершенный хеш, но подозреваю что по меркам питона - лишняя операция деления и лишняя косвенность - он нулевой

PS: Собственно в GCC 2.xx было подобное опытное расширение - сигнатуры, но не прижилось.

[personal profile] bowhill 2020-01-07 03:25 pm (UTC)(link)
Можно, конечно, и структуру объектом назвать, это уже дело стиля. Ну а так есть и наследование, и инкапсуляция. То есть антагонисты реляционной модели.
Edited 2020-01-07 15:29 (UTC)