Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 23, 2008 20:58:55

Lolka
От:
Зарегистрирован: 2007-09-29
Сообщения: 128
Репутация: +  0  -
Профиль   Отправить e-mail  

Pickle (?) для "экстра" полей

Есть громадный экселевский файл с кучей листов (в общей сложности ~ полмиллиона записей)
Есть ряд общих полей, т.е. таких, которые однозначно есть на каждом листе. И еще дополнительно на каждом листе есть свои, “уникальные” для листа поля. Надо все это чудо уложить в sql'ьную БД, предположительно postgresql.
Есть ли смысл, грубо говоря, создать одну таблицу с общими полями и еще одно текстовое поле, в которое складывать сериализированный словарь с “уникальными полями”?
Насколько это вообще бестолковая мысль?) Поиск выполняться будет, но, в большинстве случаев, по “общим” полям, а вывод записей будет всегда постраничный. Насколько будет ресурсоемко решение с сериализацией, и, может быть, есть еще варианты?

update: нашел такое для Джанги Pickled Object Field, тем не менее, хотелось бы слышать комментарии.



Отредактировано (Окт. 23, 2008 21:38:18)

Офлайн

#2 Окт. 23, 2008 21:52:23

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Pickle (?) для "экстра" полей

Я частенько так поступаю. В SQLAlchemy есть специальный тип колонки - PickleType. При присваивании полю этого типа некоторого объекта, объект автоматически сериализуется, при получении значения поля, происходит десериализация объекта.

..bw



Офлайн

#3 Окт. 24, 2008 07:33:35

Lolka
От:
Зарегистрирован: 2007-09-29
Сообщения: 128
Репутация: +  0  -
Профиль   Отправить e-mail  

Pickle (?) для "экстра" полей

И фильтрация по такому полю работает?
И пишет

http://pylonsbook.com/alpha1/the_model_and_sqlalchemy
In addition to the types listed above there is a PickleType which is based on SQLAlchemy's Binary type. PickleType uses Python's pickle.dumps() to “pickle” objects being saved to the database and it uses pickle.loads() to unpickle objects being retrieved. It therefore allows you to store any pickleable Python object as a serialised binary field.
и
http://www.sqlalchemy.org/docs/05/types.html#types_standard_binary
Binary
The Binary type generates BLOB or BYTEA when tables are created, and also converts incoming values using the Binary callable provided by each DBAPI.
Хмм… в общем, буду читать, спасибо :)



Отредактировано (Окт. 24, 2008 07:39:53)

Офлайн

#4 Окт. 24, 2008 15:45:44

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Pickle (?) для "экстра" полей

Ни СУБД, ни SQLAlchemy, разумеется, не знают о содержимом такого поля (знаешь только ты и только после десериализации, она происходит автоматически), соответсвенно никакого адекватного запроса по этому полю (например, если сериализуется словарь, то выбрать только те записи в словаре которых присутствует некий ключ) сделать не получится. Я даже не пробовал, просто сделал логичный вывод. Да и особенной потребности не возникало пока.

..bw



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version