Форум сайта python.su
Есть громадный экселевский файл с кучей листов (в общей сложности ~ полмиллиона записей)
Есть ряд общих полей, т.е. таких, которые однозначно есть на каждом листе. И еще дополнительно на каждом листе есть свои, “уникальные” для листа поля. Надо все это чудо уложить в sql'ьную БД, предположительно postgresql.
Есть ли смысл, грубо говоря, создать одну таблицу с общими полями и еще одно текстовое поле, в которое складывать сериализированный словарь с “уникальными полями”?
Насколько это вообще бестолковая мысль?) Поиск выполняться будет, но, в большинстве случаев, по “общим” полям, а вывод записей будет всегда постраничный. Насколько будет ресурсоемко решение с сериализацией, и, может быть, есть еще варианты?
update: нашел такое для Джанги Pickled Object Field, тем не менее, хотелось бы слышать комментарии.
Отредактировано (Окт. 23, 2008 21:38:18)
Офлайн
Я частенько так поступаю. В SQLAlchemy есть специальный тип колонки - PickleType. При присваивании полю этого типа некоторого объекта, объект автоматически сериализуется, при получении значения поля, происходит десериализация объекта.
..bw
Офлайн
И фильтрация по такому полю работает?
И пишет
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)
Офлайн
Ни СУБД, ни SQLAlchemy, разумеется, не знают о содержимом такого поля (знаешь только ты и только после десериализации, она происходит автоматически), соответсвенно никакого адекватного запроса по этому полю (например, если сериализуется словарь, то выбрать только те записи в словаре которых присутствует некий ключ) сделать не получится. Я даже не пробовал, просто сделал логичный вывод. Да и особенной потребности не возникало пока.
..bw
Офлайн