micromongo

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

Rating: nan/5 (Total Votes: 0)

micromongo е малък слой около pymongo, която ви позволява да създавате прости класове ORM стил, които могат да изпълняват валидиране, позволяват точка на достъпа до документи, авто-обтичане резултати queryset, и ще ви даде преди / след спасяване куки.
Той е проектиран с microframeworks в ума, но е заявление и рамка агностик. Тя има за цел да опрости използването на pymongo и предоставя инструменти за общи идиоми, да не се закриват pymongo или MongoDB от вашите структури от данни.
Вие сте добре дошли да отворите въпроси или изпратете привличащи исканията на GitHub micromongo си
micromongo прави няколко дизайнерски решения в името на опростяване, който не може да работи за вас:
& Nbsp; - & Nbsp; micromongo поддържа единна глобална връзка, така че не може да има модели, които се свързват с множество MongoDB сървъри
& Nbsp; - & Nbsp; има шепа имена на модели и документ имена на атрибути, които няма да работят с micromongo модели; те ще бъдат обхванати в пълните Документи
& Nbsp; - & Nbsp; можете да имате само един модел за събиране
<Силен> Първи стъпки
За да започнете с micromongo, просто го внася:
>>> От micromongo внос свържете, Model
>>> Гр = свързват ()
Свържете се същите аргументи като Connection обект pymongo, а се държи почти идентичен, с изключение, че той се опитва да се върне автоматично резултатите от заявката увити в съответните класове модел. Обектът за свързване, който създаде през настоящата покана ще бъдат кеширани и използвани от различните съоръжения ORM стил, като Model.save (), Model.proxy и т.н. Ако искате чиста, стандартна Connection обект, можете да получите едно лесно :
>>> От micromongo внос clean_connection
>>> Чиста = clean_connection ()
Имайте предвид, че clean_connection не взема аргументи и винаги ще се върне клас чиста Connection със същите настройки като сегашната micromongo връзката.
С тези свързващи обекти, можете да създадете база данни или да правите каквото си взели при нормални pymongo обекти:
>>> Db = c.test_db
>>> Колекция = db.test_collection
>>> Collection.save ({"docid": 1, "се провали": Фалшиви})
>>> Collection.find_one ()
{U'_id ": ObjectId (" ... "), u'fail": False, u'docid ": 1}
Можете също да обяви свой собствен модел за определена колекция в декларативен стил:
>>> Клас TestModel (Model):
& Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; & Nbsp; събиране = 'test_db.test_collection "
>>> Collection.find_one ()

Тези класове имат редица допълнителни функции над речник които могат да ги направят много по-удобно да се използва. Клавишите за документи са достъпни като атрибути:
>>> T = 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": False, u'docid ": 17}
<Силни> определящи модели
Above, атрибута колекция е назначен нашия Foo модел. Това е пряк път, все пак; ако базата данни и събиране са възложени поотделно, моделът може да разбера името на пълната колекция. Ако събирането и базата данни не са налични, micromongo се опитва да го разбера, основана на името на класа и модул на вашия модел. Например, blog.Post ще стане blog.post, или stream.StreamEntry ще стане stream.stream_entry. Изрично е по-добре, отколкото имплицитно, и това е насърчавана, че сте задали събирането ръчно.
Освен опаковане и разопаковане резултати от базата данни, модели могат също да се определи документ спец, който може да се определи по подразбиране и изпълнява валидиране преди запазване на модела. Вземете една тривиална блог пост модел:
>>> От micromongo.spec внос *
>>> Клас Post (Model):
& 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 ()
>>> Стр

Няколко неща се случва тук. Полетата, които са по подразбиране се инициализира с това по подразбиране, дали те са задължителни или не. Ако задължително поле не е по подразбиране, това е инициализира с None.
Полетата могат да се аргумент от тип, който може да бъде или подлежащо на поискване изплащане, който отнема стойност и връща True или False, един или повече видове базови, или една или повече стойности. Ако са предвидени един или повече видове, isinstance се използва за тестване, че стойностите са на правилния тип. Ако са осигурени една или повече стойности, полето действа като вид ENUM, проверка, че стойностите са в на ценностната си система. Ако не е дадено тип, валидиране винаги минава на полето, ако не е необходимо, и отсъства.
Ако една област, в р е дал невалиден тип, тогава ValueError е повдигнато:
>>> P.title = 10
>>> P.save ()
Traceback (последното повикване последната):
& Nbsp; ...
ValueError: Keys не съвпадат спец: ["заглавието"]
>>> Дел p.author
>>> P.save ()
Traceback (последното повикване последната):
& Nbsp; ...
ValueError: Липсваща области: ["автор"], Невалидни области: ["заглавието"]
>>> P.title = "Моята първа блога"
>>> P.author = "jmoiron"
>>> P.published = True
>>> P.body = U "Това е първият ми блог пост .. & Nbsp; Толкова съм развълнувана!"
>>> P.save ()
<Силен> Model.find
За удобство и DRY, Model.find е classmethod, че ще използвате курсора micromongo да издаде находка срещу дясното колекция. Този метод се държи точно като Collection.find pymongo си.
леко променена Cursor клас micromongo също прави Джанго вдъхновени метод order_by на разположение на всички курсори (намери и нещо, което да свързва изключва, ако той отговаря с курсора). Можете да мине един или повече имена на полета, с незадължителен водеща "-", за да подреди нещата по възходящ или низходящ ред.
Тези промени позволяват да използвате по-голямо предимство на pymongo без да се налага да го импортирате, и ви позволява да се избегне ненужното повтаряне на местоположението на вашите данни.
област subclassing
Съветваме ви да създавате свои собствени полета, които правят това, което желаете. Полеви подкласове имат функция кука pre_validate които приемам входящи стойност и може да я превърне но те искат. Имайте предвид, че това ще работи само ако полетата са действително се съдържат; така да се получи нещо като auto_now_add на DateTimeField, вие ще искате да направите това е необходимо и има своя pre_validate превърне Никой в ​​datetime.datetime.now ()

<силни> Изисквания :.

  • Python

Подобен софтуер

Amalgam
Amalgam

11 May 15

StelsMDB
StelsMDB

20 Feb 15

psycopg
psycopg

12 May 15

Orabbix
Orabbix

11 May 15

Друг софтуер на разработчика Jason Moiron

speedparser
speedparser

14 Apr 15

pdf2zip
pdf2zip

11 May 15

redtape
redtape

14 Apr 15

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

Коментари не е намерена
добавите коментар
Включете на изображения!