micromongo

Скріншот програми:
micromongo
Дані програми:
Версія: 0.1.4
Дата завантаження: 14 Apr 15
Розробник: Jason Moiron
Ліцензія: Безкоштовно
Популярність: 40

Rating: 5.0/5 (Total Votes: 1)

micromongo є крихітний шар навколо PyMongo, що дозволяє створювати прості класи ORM-стиль, який може виконати перевірку, дозволяють точка доступу до документів, авто-обгортання результатів 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, а веде себе майже однаково, за винятком того, що намагається автоматично повертати результати запиту, загорнуті у відповідних класах моделі. Об'єкт підключення, який ви створюєте за допомогою цього виклику буде кешуватися і використовуватися в різних об'єктів ORM-стиль, як Model.save (), Model.proxy і т.д. Якщо ви хочете чистий, стандартний об'єкт Connection, ви можете отримати один легко :
>>> Від micromongo clean_connection імпорту
>>> Чистий = clean_connection ()
Зверніть увагу, що clean_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 імпорту *
>>> Класу Post (модель):
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; кол-во = 'test_db.blog_posts "
І NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; & NBSP; Spec = 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 '', 'автор': u'jmoiron ',' опублікувала ': FALSE}>
Кілька речей, які тут відбувається. Поля, які за умовчанням мають инициализируются, що дефолт, чи потрібне вони чи ні. Якщо обов'язкове поле не має значення за замовчуванням, це ініціалізувати Ні.
Поля можуть брати аргумент типу, який може бути або відкликані, що бере значення і повертає істину або брехня, один або декілька базових типів, один або більше значень. Якщо один або більше типів передбачені, 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 = U "Це мій перший пост в блозі .. & 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

Схожі програми

Librarian DB
Librarian DB

11 May 15

codership-mysql
codership-mysql

12 May 15

Andromeda
Andromeda

2 Jun 15

SQLScreens
SQLScreens

20 Feb 15

Інші програми розробника Jason Moiron

redtape
redtape

14 Apr 15

speedparser
speedparser

14 Apr 15

pdf2zip
pdf2zip

11 May 15

micromongo

Коментар не знайдено
додати коментар
Включіть картинки!
Пошук за категоріями