micromongo

Logiciel capture d'écran:
micromongo
Détails logiciels:
Version: 0.1.4
Date de transfert: 14 Apr 15
Développeur: Jason Moiron
Licence: Gratuit
Popularité: 2

Rating: nan/5 (Total Votes: 0)

micromongo est une couche minuscule autour pymongo qui vous permet de créer des classes simples ORM de style qui peut effectuer la validation, permettant l'accès aux documents de dot, les résultats de QuerySet auto-wrap, et vous donner pré / post sauvegarde crochets.
Il est conçu avec microframeworks à l'esprit, mais est l'application et le cadre agnostique. Il est destiné à simplifier l'utilisation des pymongo et fournir des outils pour les idiomes communs, ne pas obscurcir pymongo ou mongodb de vos structures de données.
Vous êtes invités à ouvrir des questions ou envoyer des demandes de traction sur le github de micromongo
micromongo fait quelques décisions de conception dans le nom de la simplification qui pourraient ne pas travailler pour vous:
& Nbsp; - & nbsp; micromongo maintient une connexion unique mondiale, de sorte que vous ne peut pas avoir des modèles qui se connectent à des serveurs de MongoDB multiples
& Nbsp; - & nbsp; il ya une poignée de noms de modèles et documents noms d'attributs qui ne fonctionnent pas avec des modèles de micromongo; ceux-ci seront couverts dans les docs complètes
& Nbsp; - & nbsp; vous ne pouvez avoir un modèle par collection
Mise en route
Pour commencer avec micromongo, juste importer:
>>> From micromongo importation connecter, Modèle
>>> C = connect ()
connect prend les mêmes arguments que l'objet Connection de pymongo, et se comporte presque à l'identique, sauf qu'il tente de retourner automatiquement les résultats de requête enveloppés dans les classes de modèle approprié. L'objet de connexion que vous créez via cet appel sera mis en cache et utilisé par les diverses installations ORM de style, comme Model.save (), Model.proxy, etc. Si vous voulez, un objet de connexion standard propre, vous pouvez obtenir un facilement :
>>> From micromongo importation clean_connection
>>> Clean = clean_connection ()
Notez que clean_connection ne prend pas d'arguments et retournera toujours une classe de connexion propre avec les mêmes paramètres que la connexion micromongo actuelle.
Avec ces objets de connexion, vous pouvez créer des bases de données ou de faire tout ce que vous le feriez avec des objets pymongo normales:
>>> Db = c.test_db
>>> Collection = db.test_collection
>>> Collection.save ({"docid": 1, "fail": Faux})
>>> Collection.find_one ()
{U'_id ': ObjectId (' ... '), u'fail': Faux, u'docid ': 1}
Vous pouvez également déclarer votre propre modèle pour une collection particulière de style déclaratif:
>>> TestModel de classe (modèle):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; collection = 'test_db.test_collection'
>>> Collection.find_one ()

Ces classes ont un certain nombre de fonctionnalités supplémentaires par rapport à un dictionnaire qui peuvent les rendre beaucoup plus pratique à utiliser. Les touches de documents sont tous accessibles comme attributs:
>>> T = collection.find_one ()
>>> T.fail
Faux
>>> T.docid
1
Les documents sont également facilement persisté à la base de données:
>>> T.docid = 17
>>> T.save ()
>>> Clean.test_db.test_collection.find_one ()
{U'_id ': ObjectId (' ... '), u'fail': Faux, u'docid ': 17}
modèles définissant
Ci-dessus, l'attribut de collecte a été affecté à notre modèle de Foo. Ce était un raccourci, si; si la base et la collecte sont attribués séparément, le modèle peut comprendre le nom complet de la collection. Si la collecte et la base de données ne sont pas présents, micromongo tente de le comprendre sur la base du nom de la classe et le module de votre modèle. Par exemple, blog.Post deviendra blog.post ou stream.StreamEntry deviendra stream.stream_entry. Explicit est mieux que implicite, et il est encouragé que vous définissez manuellement la collection.
Outre emballage et le déballage des résultats de la base de données, les modèles peuvent également définir un document de spécification qui peut définir par défaut et effectuer la validation avant de sauvegarder le modèle. Prenez un modèle de blog trivial:
>>> De l'importation micromongo.spec *
>>> Classe Post (modèle):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; collecte = '' 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 = Champ (obligatoire = True, défaut = 'jmoiron', type = basestring),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; title = Champ (obligatoire = False, défaut = '', type = basestring),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; publié = Champ (obligatoire = True, par défaut = False, type = [True, False]),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; corps = Champ (type = unicode),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; timestamp = Champ (),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; )
>>> Post.new p = ()
>>> P

A peu de choses se passent ici. Les champs qui ont un défaut sont initialisés à ce défaut se ils doivent ou non. Si un champ obligatoire n'a pas de défaut, ce est initialisée à Aucun.
Les champs peuvent prendre un argument de type, qui peut être soit un appelable qui prend une valeur et renvoie True ou False, un ou plusieurs types de base, ou une ou plusieurs valeurs. Si un ou plusieurs types sont fournis, isinstance est utilisé pour tester que les valeurs sont le bon type. Si une ou plusieurs valeurs sont fournies, le terrain agit comme un type d'énumération, en vérifiant que les valeurs sont dans son ensemble de valeurs. Si aucun type ne est donné, la validation passe toujours sur un terrain que si elle est nécessaire et absent.
Si un champ de p est donné un type non valide, puis un ValueError est levée:
>>> P.title = 10
>>> P.save ()
Retraçage (appel plus récente en dernier):
& Nbsp; ...
ValueError: Touches ne correspondent pas spec: ['title']
>>> Del p.author
>>> P.save ()
Retraçage (appel plus récente en dernier):
& Nbsp; ...
ValueError: champs manquants: [«auteur»], les champs non valides: ['title']
>>> P.title = 'Mon premier billet de blog'
>>> P.author = 'jmoiron'
>>> P.published = True
>>> P.body = u "Ce est mon premier blog post .. & nbsp; Je suis tellement excitée!"
>>> P.save ()
Model.find
Pour plus de commodité et DRY, Model.find est un classmethod qui va utiliser le curseur de micromongo d'émettre une trouvaille contre le droit collection. Cette méthode se comporte exactement le même que Collection.find de pymongo.
la classe du curseur légèrement modifiée de micromongo fait également une méthode de order_by django-inspiré la disposition de tous les curseurs (trouver et tout ce que vous enchaîner off si elle renvoie un curseur). Vous pouvez passer un ou plusieurs noms de champs, avec une option de premier plan '-', pour arranger les choses par ordre croissant ou décroissant.
Ces changements vous permettent d'utiliser la plupart de la puissance de pymongo sans avoir à importer, et vous permet d'éviter les répétitions inutiles de l'emplacement de vos données.
champ sous-classement
Vous êtes invités à créer vos propres champs qui ne ce que vous voulez. sous-classes sur le terrain ont une fonction de crochet pre_validate qui prennent une valeur entrant et peut transformer comme ils le veulent. Notez que cela ne fonctionnera que si les champs sont effectivement présentes; afin d'obtenir quelque chose comme un auto_now_add sur un DateTimeField, vous voudrez faire requis et avoir son pre_validate tourner Aucun dans datetime.datetime.now ()

Exigences :.

  • Python

Logiciel similaire

anykeystore
anykeystore

15 Apr 15

TecUtils
TecUtils

20 Feb 15

MongoMultiMaster
MongoMultiMaster

20 Feb 15

free4my
free4my

20 Feb 15

D'autres logiciels de développeur Jason Moiron

redtape
redtape

14 Apr 15

speedparser
speedparser

14 Apr 15

pdf2zip
pdf2zip

11 May 15

Commentaires à micromongo

Commentaires non trouvées
Ajouter un commentaire
Tourner sur les images!