micromongo

Скриншот программы:
micromongo
Детали программы:
Версия: 0.1.4
Дата загрузки: 14 Apr 15
Разработчик: Jason Moiron
Тип распространения: Бесплатная
Популярность: 2

Rating: nan/5 (Total Votes: 0)

micromongo крошечный слой вокруг PyMongo, что позволяет создавать простые классы ОРМ-стиль, который может выполнять проверку, позволяющие точка доступа к документам, авто-обертывание результатов QuerySet, и дать вам Pre / Post Сохранить крючков.
Она разработана с microframeworks в виду, но это приложение и база агностиком. Она предназначена для упрощения использования PyMongo и предоставить инструменты для идиомы, чтобы не затемнять PyMongo или MongoDB из ваших структур данных.
Вы можете открыть вопросы или посылать запросы тянуть на GitHub micromongo в
micromongo делает несколько проектных решений во имя упрощения, что, возможно, не работать для вас:
& NBSP; - & NBSP; micromongo поддерживает единую глобальную связь, так что вы не можете иметь модели, которые подключаются к нескольким серверам MongoDB
& NBSP; - & NBSP; Есть Handfull имен модели и имен атрибутов документа, которые не будут работать с моделями micromongo; Они будут рассмотрены в полном объеме документы
& NBSP; - & NBSP; Вы можете иметь только одну модель за коллекции
Начало работы
Для начала с micromongo, просто импортировать его:
>>> От импорта micromongo подключения, Модель
>>> C = подключения ()
Подключите принимает те же аргументы как объект Connection PyMongo, и ведет себя почти одинаково, за исключением того, что пытается автоматически возвращать результаты запроса, завернутые в соответствующих классах модели. Объект подключения, который вы создаете с помощью этого вызова будет храниться в кэше и используется в различных объектов ОРМ-стиле, как Model.save (), Model.proxy, и т.д. Если вы хотите чистый, стандартный объект Connection, вы можете получить один легко :
>>> От импорта micromongo clean_connection
>>> Чистый = clean_connection ()
Обратите внимание, что clean_connection не принимает аргументов и всегда возвращает чистую класс Connection с теми же настройками, как текущего соединения micromongo.
С помощью этих объектов подключения, вы можете создавать базы данных или делать все, что вы бы с нормальных объектов PyMongo:
>>> ДБ = c.test_db
>>> Коллекция = db.test_collection
>>> Collection.save ({"DocID": 1, "провал": Ложь})
>>> Collection.find_one ()
{u'_id ": ObjectId ('...'), u'fail": Ложь, u'docid ": 1}
Вы также можете объявить свою собственную модель для каждой коллекции в декларативном стиле:
>>> Класс TestModel (модель):
& NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; Коллекция = 'test_db.test_collection "
>>> Collection.find_one ()

Эти классы имеют ряд дополнительных функций над словарем, который может сделать их гораздо более удобным в использовании. Ключи документ все доступны в качестве атрибутов:
>>> Т = collection.find_one ()
>>> T.fail
Ложь
>>> T.docid
1
Документы также легко сохраняется в базе данных:
>>> T.docid = 17
>>> T.save ()
>>> Clean.test_db.test_collection.find_one ()
{u'_id ": ObjectId ('...'), u'fail": Ложь, u'docid ": 17}
, определяющие модели
Выше атрибут коллекция была передана нашей модели Foo. Это был кратчайший путь, хотя, если база данных и коллекция назначаются отдельно, модель может выяснить полное имя коллекции. Если сбор и базы данных нет, micromongo пытается выяснить это на основе имени класса и модуля вашей модели. Например, blog.Post станет blog.post или stream.StreamEntry станет stream.stream_entry. Явное лучше, чем неявное, и это обнадеживает то, что вы установите коллекцию вручную.
Кроме того, упаковка и распаковка результаты из базы данных, модели могут также определить спецификации документ, который может определить значения по умолчанию и выполнение проверки перед сохранением модели. Возьмите тривиальный блог пост модель:
>>> От импорта micromongo.spec *
>>> Класс сообщение (модель):
& NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; коллекция = '' test_db.blog_posts
& NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; спецификации = DICT (
& NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; Автор = полевых условиях (= True, по умолчанию = 'jmoiron ", тип = basestring),
& NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; Название = полевых условиях (= False, по умолчанию = '', тип = basestring),
& NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; опубликованные = полевых условиях (= True, по умолчанию = False, тип = [True, False]),
& NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; Тело = поле (тип = Unicode),
& NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; метка = поле (),
& NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; )
>>> Р = Post.new ()
>>> Р
<Сообщение: {"название": у '', 'автор': u'jmoiron ',' опубликовала ': Ложь}>
Несколько вещей, которые собираются здесь. Поля, которые по умолчанию инициализируются этой умолчанию, требуется ли они или нет. Если обязательное поле не имеет по умолчанию, это инициализировать Нет.
Поля могут принимать аргумент типа, который может быть либо вызываемый которая принимает значение и возвращает Правда или Ложь, один или несколько базовых типов, или одного или нескольких значений. Если один или несколько типов предусмотрены, isinstance используется для проверки, что значения правильного типа. Если одно или несколько значений предусмотрены, то поле действует как тип перечисления, проверки того, что значения в наборе значений. Если тип не указан, проверка всегда проходит на поле, если он не требуется, и отсутствуют.
Если поле в р дается неверный тип, то ValueError поднят:
>>> P.title = 10
>>> P.SAVE ()
Traceback (самый последний вызов последнего):
& NBSP; ...
ValueError: Ключи не соответствует спецификации: ['название']
>>> Дель p.author
>>> P.SAVE ()
Traceback (самый последний вызов последнего):
& NBSP; ...
ValueError: Отсутствующие поля: ['автор'], инвалидные поля: ['название']
>>> P.title = 'Моя первая Блогпост "
>>> P.author = 'jmoiron "
>>> P.published = True
>>> P.body = и "Это моя первая запись в блоге .. & NBSP; я так взволнован!"
>>> P.SAVE ()
Model.find
Для удобства и сухой, Model.find является classmethod, который будет использовать курсор micromongo к выдаче находку против правого коллекции. Этот метод ведет себя точно так же, как Collection.find PyMongo в.
слегка модифицированный класс micromongo в Курсор также делает Django вдохновил метод order_by доступной для всех курсоров (найти и все, что вы цепь, если бы она возвращает курсор). Вы можете пройти один или более имен полей, с дополнительным ведущих "-", чтобы отсортировать вещи по возрастанию или убыванию.
Эти изменения позволяют использовать большую часть мощности PyMongo без чтобы импортировать его, и позволяет избежать ненужного повторения расположения ваших данных.
поле подклассов
Вам предлагается создавать свои собственные поля, которые делают то, что вы хотите. Полевые подклассы имеют функцию крюк pre_validate которые принимают входящий значение и может превратить его, однако они хотят. Обратите внимание, что это будет работать, только если поля, на самом деле присутствует; поэтому, чтобы получить что-то вроде auto_now_add на DateTimeField, вы хотите, чтобы сделать его обязательным и иметь его pre_validate повернуть None в datetime.datetime.now ()

Требования :.

  • Python

Похожие программы

nflgame
nflgame

20 Feb 15

libsqljdbc-auth
libsqljdbc-auth

3 Jun 15

codership-mysql
codership-mysql

12 May 15

PM Report
PM Report

20 Feb 15

Другие программы разработчика Jason Moiron

speedparser
speedparser

14 Apr 15

redtape
redtape

14 Apr 15

pdf2zip
pdf2zip

11 May 15

Комментарии к micromongo

Комментарии не найдены
добавить комментарий
Включите картинки!