micromongo

Screenshot Software:
micromongo
Szczegóły programowe:
Wersja: 0.1.4
Filmu: 14 Apr 15
Wywoływacz: Jason Moiron
Licencja: Wolny
Popularność: 2

Rating: nan/5 (Total Votes: 0)

micromongo jest malutka warstwa wokół pymongo, które pozwala na tworzenie prostych klas ORM stylu, który może wykonać walidację, umożliwiające dostęp do dokumentów dot auto-wrap, wyniki QuerySet i dają przed / po zapisać haków.
Jest zaprojektowany z myślą microframeworks, ale jest agnostykiem i ramy aplikacji. To ma na celu uproszczenie wykorzystania pymongo i zapewnić narzędzia do wspólnych idiomów, aby nie przesłaniać pymongo lub MongoDB ze swoimi strukturami danych.
Zapraszamy do otwarcia problemów lub wysłać wnioski ciągnąć github micromongo za
micromongo sprawia, że ​​kilka decyzji projektowych w imię uproszczenia, które nie mogą pracować dla Ciebie:
& Nbsp; - & nbsp; micromongo utrzymuje jednego globalnego połączenia, więc nie można mieć modele, które łączą się z wieloma serwerami MongoDB
& Nbsp; - & nbsp; istnieje garść nazwy modelu i nazw atrybutów dokumentów, które nie będą pracować z modelami micromongo; te zostaną pokryte w pełnych docs
& Nbsp; - & nbsp; można mieć tylko jeden model za kolekcji
zaczynasz
Aby rozpocząć z micromongo, wystarczy zaimportować go:
>>> Z importu micromongo podłączenia, model
>>> C = connect ()
connect ma te same argumenty, obiektu Connection pymongo, a zachowuje się niemal identycznie, z tym, że spróbuje automatycznie powrócić wyników zapytania zapakowane w odpowiednich klasach modelowych. Celem połączenia jest utworzenie za pomocą tego połączenia będą buforowane i wykorzystywane przez różnych obiektów ORM-styl, jak Model.save (), Model.proxy itp Jeśli chcesz czysty, standard obiektu Connection, można uzyskać jedną z łatwością :
>>> Z micromongo importu clean_connection
>>> Czyste = clean_connection ()
Należy pamiętać, że clean_connection nie bierze argumenty i zawsze zwraca czystej klasy połączenia z tymi samymi ustawieniami jak bieżącego połączenia micromongo.
Z tych obiektów połączeń, można utworzyć bazy danych, czy cokolwiek by z normalnych obiektów pymongo:
>>> Db = c.test_db
>>> Kolekcja = db.test_collection
>>> Collection.save ({"ID_dokumentu": 1, "nie": false})
>>> Collection.find_one ()
{U'_id ": ObjectId (" ... "), u'fail": Fałsz, u'docid ': 1}
Możesz również zgłosić swój własny model do konkretnego kolekcji w stylu deklaratywnej:
>>> Klasy TestModel (model):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Kolekcja = "test_db.test_collection"
>>> Collection.find_one ()

Zajęcia te mają szereg dodatkowych funkcji, ponad słownika, który może sprawić, że o wiele bardziej wygodny w użyciu. Klawisze są dostępne dokument jako atrybuty:
>>> T = collection.find_one ()
>>> T.fail
Fałszywy
>>> T.docid
1
Dokumenty są łatwo utrzymywały się do bazy danych:
>>> T.docid = 17
>>> T.save ()
>>> Clean.test_db.test_collection.find_one ()
{U'_id ": ObjectId (" ... "), u'fail": Fałsz, u'docid ": 17}
modele określające
Powyżej, atrybut kolekcja została przypisana do naszego modelu Foo. To był skrót, choć; jeśli baza danych i gromadzenie przypisane są oddzielnie, model może dowiedzieć się pełną nazwę kolekcji. Jeśli zbieranie i bazy danych nie są obecne, micromongo próbuje zrozumieć to na podstawie klasy i modułu nazwą wybranego modelu. Na przykład blog.Post będzie blog.post lub stream.StreamEntry będzie stream.stream_entry. Wyraźne jest lepsze niż niejawna, i to zachęca się, że ręcznie ustawić kolekcji.
Poza pakowanie i rozpakowywanie wyników z bazy danych, modele mogą również określić dokument, który może określić niespełniającego domyślne i sprawdzania poprawności przed zapisaniem modelu. Weź trywialny modelu blogu:
>>> Z micromongo.spec importu *
>>> Klasy Post (model):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Kolekcja = 'test_db.blog_posts'
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Spec = dict (
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; author = Pole (wymagane = True, domyślnie = "jmoiron" type = basestring),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; title = Pole (wymagane = false, domyślnie = "" type = basestring),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; opublikowane = Pole (wymagane = True, domyślnie = false, typ = [true, false]),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Ciało = Pole (typ = Unicode),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; timestamp = Pole (),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; )
>>> P = Post.new ()
>>> P

Kilka rzeczy się tu dzieje. Pola, które mają domyślne są inicjowane do tego, czy są domyślnie wymagane lub nie. Jeśli wymagane pole nie posiada domyślne, to zainicjowany na Brak.
Pola mogą mieć argument typu, które mogą albo być wpłacone, że przyjmuje wartość i zwraca True lub False, jednego lub więcej typów bazowych, lub jeden lub więcej wartości. Jeśli są jeden lub więcej typów, isinstance służy do testowania, że ​​wartości są odpowiedni rodzaj. Jeśli jedna lub więcej wartości są, działa jako pole typu enum, sprawdzając, czy wartości są w zbiorze wartości. Jeżeli nie masz podano, walidacja zawsze przechodzi na polu, chyba że jest to wymagane i nieobecny.
Jeśli pola w pkt podano nieprawidłowy typ, a następnie ValueError podnosi:
>>> P.title = 10
>>> P.save ()
Traceback (najnowsze połączenie ostatni):
& Nbsp; ...
ValueError: Klawisze nie odpowiada specyfikacji: ['title']
>>> Del p.author
>>> P.save ()
Traceback (najnowsze połączenie ostatni):
& Nbsp; ...
ValueError: Pola Missing: ["autor"] Nieprawidłowe pola: ['title']
>>> P.title = "Mój pierwszy blogpost"
>>> P.author = "jmoiron"
>>> P.published = True
>>> P.body = u "To jest mój pierwszy wpis na blogu .. & nbsp; Jestem tak podekscytowana!"
>>> P.save ()
Model.find
Dla wygody i DRY, Model.find jest classmethod, że będzie używać kursora micromongo do wydania znalezisko przed właściwym kolekcji. Metoda ta zachowuje się dokładnie tak samo, jak pymongo za collection.find.
nieco zmodyfikowany klasy Cursor micromongo sprawia także sposób order_by django inspirowane dostępne dla wszystkich kursorów (znaleźć i coś, co przykuje się jeśli zwraca kursor). Możesz przekazać jeden lub więcej nazw pól, z opcjonalnym wiodących "-", aby sortować rzeczy po rosnąco lub malejąco.
Zmiany te pozwalają korzystać z większości mocy pymongo bez konieczności importowania i pozwala uniknąć niepotrzebnego powtarzania lokalizacji danych.
subclassing pola
Zachęcamy do tworzenia własnych pól, które robią to, co chcesz. Podklasy terenowe mają funkcję hak pre_validate których podjęcia wartości przychodzące i może przekształcić go jednak chcą. Zauważ, że to działa tylko wtedy, gdy pola są rzeczywiście obecne; tak, aby otrzymać coś w auto_now_add na DateTimeField, będziemy chcieli, aby to wymagane i mają jej pre_validate włączyć Brak do datetime.datetime.now ()

Wymagania .

  • Python

Podobne oprogramowanie

Knoda
Knoda

2 Jun 15

phpMyBackupPro
phpMyBackupPro

19 Feb 15

S3QL
S3QL

20 Feb 15

Inne programy z deweloperem Jason Moiron

redtape
redtape

14 Apr 15

speedparser
speedparser

14 Apr 15

pdf2zip
pdf2zip

11 May 15

Komentarze do micromongo

Komentarze nie znaleziono
Dodaj komentarz
Włącz zdjęć!