Форумы сайта python.su
Вы не зашли.
Мне для работы надо (наверное) база данных. Но желательно очень попроще и чтобы я мог работать с ней через питон-интерфейс, без глубокого вникания в SQL. Есть ли такое?
Задача у меня такая:
имеется очень много (несколько гигибайт) текстовых логов системы. каждый лог маленький. но их просто очень много. логи текстовые. в них много отладочной информации для меня как программиста, но есть и собственно числовая информация о состоянии системы. Я умею читать эти логи, парсить их и вычленять существенную информацию из них. Далее эту информацию (которой будет уже намного меньше) мне надо обработать статистически: за определенный выбираемый пользователем отрезок времени посчитать минимумы, максимумы, среднее по больнице и т.п.
Парсить все это безобразие при каждом старте программы -- не кошерно и идеологически неправильно. Плюс эти гигабайты дофига места на диске занимают только зря.
Вот и подумалось, что надо распарсенные данные куда-то сохранять в виде, удобном для последующей быстрой обработки. Есть подозрение, что мне нужна какая-то база данных.
Фактически, каждый лог идентифицируется 2мя параметрами: серийный номер изделия (их у меня много) и дата/время начала-окончания лога. Можно придумать сериализовать распарсенные логи на диск -- может это даже будет проще. Но тогда надо писать свою логику фильтрации данных по серийному номеру+период времени.
Поскольку во всяких там SQL я полный чайник, хочу спросить совета у гуру.
Если брать базу данных или питоновую обвертку. то мне хотелось бы, чтобы:
* не надо было ставить и запускать отдельный сервер типа PostgreSQL. Нужно автономное решение типа pysqlite. Т.е. чтобы установил одну либу и поехал. Конечное приложение затем будет паковаться при помощи py2exe и отдаваться заказчику. Инсталляция дополнительных (локальных) серверов у заказчика для меня недопустима. Все должно работать из коробки. Инсталлятор я делаю при помощи Inno Setup.
* простой и понятный питон интерфейс: разбираться с SQL запросами пока нет времени и желания
* туториал/дока на вменяемом английском, желательно на русском.
Как-то читал давно про ZODB. Вроде как это объектная база данных для питона, с питон интерфейсом. Я ничего не путаю? Может ли она мне подойти под мою задачу?
Неактивен
Могу порекомендовать две вещи.
Berkleydb - самая простая штука. Никаких серверов не надо ставить. Просто открываем как файл и работаем. Доступ не SQL -ый, а через методы. Для нее в питоне есть два врапера ( в станлартной поставке): dbhash и bsddb. Отличаются методами работы.
Еще есть SQLite - тоже никаких серверов. Но уже SQL интерфейс. Входит в стандартный питон 2.5.
Неактивен
Наверное надо немного прояснить.
Вопрос: поможет ли мне база данных в решении задачи: выбрать некоторые данные за определенный период времени для указанного серийного номера изделия или группы номеров? Т.е. мне нужно будет получить список (или итератор) логов удовлетворяющим этим условиям.
Отредактированно bialix (2007-11-16 21:41:25)
Неактивен
Тогда какой-нибудь ORM вокруг SQL.
Например sqlalchemy вокруг SQLite ![]()
p.s. ORM - Object Relational Mapper. Такая штука чтоб не возится как раз с SQL
Отредактированно shiza (2007-11-16 21:59:05)
Неактивен
понятно. прочитал. что алхимия довольно тяжелая в понимании и освоении. а вот Elixir гораздо проще и магичнее. Стоит ли его пользовать?
Неактивен
А еще есть SQLObject и Storm ![]()
Они с SQLite опять-же работают ![]()
ZODB всетки не рекомендую. Она немного под другие задачи сделана - хранить замороженные объекты. В других случаях сильно сливает традиционным базам.
Отредактированно shiza (2007-11-17 13:17:41)
Неактивен
Настойчиво предлагаемые ORM'ы -- объектные надстройки над РСУБД. Schevo - реляционная надстройка над ООБД. Так что, что в лоб, что полбу.
bialix, если правильно сдизайнишь, то можно будет поменять бэкенд хранения без правки кода.
P.S. Устроишь тест Schevo@Durus/ZODB vs Storm/SQLAlchemy@SQLite будет тебе респект ![]()
Отредактированно j2a (2007-11-17 15:54:29)
Неактивен
Есть такая вещь: http://buzhug.sourceforge.net. Это даже не ORM, а чисто питоновский движок баз данных с pythonic-синтаксисом запросов. То есть вообще никакого SQL: именно то, что запрашивалось топикстартером. Сам я это не использовал, но было бы любопытно посмотреть на чужой опыт (хотя бы в рамках предлагаемого выше теста).
Неактивен
decorator написал:
Есть такая вещь: http://buzhug.sourceforge.net. Это даже не ORM, а чисто питоновский движок баз данных с pythonic-синтаксисом запросов. То есть вообще никакого SQL: именно то, что запрашивалось топикстартером. Сам я это не использовал, но было бы любопытно посмотреть на чужой опыт (хотя бы в рамках предлагаемого выше теста).
Я почитал туториал на Elixir -- все прозрачно и понятно.
Однако buzhug тоже интересный выбор:
buzhug.sf.net написал:
Database speed comparisons are not easy to make. I made a limited benchmark using the same use cases as SQLite's author ; it shows that buzhug is much faster than other pure-Python modules (KirbyBase, gadfly) ; SQLite, which is implemented in C, is faster, but only less than 3 times on the average
buzhug is an Open Source software, published under the revised BSD licence
Вопрос лицензии тоже актуален. :-)
Неактивен