micromongo

Software captura de pantalla:
micromongo
Detalles de software:
Versión: 0.1.4
Fecha de carga: 14 Apr 15
Promotor: Jason Moiron
Licencia: Libre
Popularidad: 40

Rating: 5.0/5 (Total Votes: 1)

micromongo es una diminuta capa alrededor pymongo que le permite crear clases sencillas de estilo ORM que pueden realizar la validación, permitir el acceso a los documentos de puntos, resultados de QuerySet auto-wrap, y le dará pre / post ahorro ganchos.
Está diseñado con microframeworks en mente, pero es de aplicación y marco agnóstico. Tiene el propósito de simplificar el uso de pymongo y proporcionar herramientas para modismos comunes, no oscurecer pymongo o mongodb de sus estructuras de datos.
Le invitamos a abrir temas o envíe una solicitud de extracción en github de micromongo
micromongo hace algunas decisiones de diseño en el nombre de la simplificación que podría no funcionar para usted:
& Nbsp; - & nbsp; micromongo mantiene una única conexión global, por lo que no puede tener modelos que se conectan a varios servidores mongodb
& Nbsp; - & nbsp; hay un puñado de nombres de modelos y documentos nombres de atributos que no trabajarán con modelos micromongo; éstas serán cubiertas en los documentos completos
& Nbsp; - & nbsp; que sólo puede tener un modelo por colección
Introducción
Para empezar micromongo, simplemente importarlo:
>>> De conectar micromongo importación, Modelo
>>> C = connect ()
connect toma los mismos argumentos como objeto Connection de pymongo, y se comporta de manera casi idéntica, excepto que intenta devolver automáticamente resultados de la consulta envueltos en las clases de modelos apropiados. El objeto de conexión que se crea a través de esta convocatoria se almacenan en caché y utilizada por las diversas instalaciones de estilo ORM, como Model.save (), Model.proxy, etc. Si quieres un objeto de conexión estándar de limpieza, usted puede conseguir uno fácilmente :
>>> From micromongo clean_connection importación
>>> Limpio = clean_connection ()
Tenga en cuenta que clean_connection no toma argumentos y siempre devuelve una clase de conexión limpia con la misma configuración que la conexión micromongo actual.
Con estos objetos de conexión, puede crear bases de datos o hacer lo que haría con objetos normales pymongo:
>>> Db = c.test_db
>>> Colección = db.test_collection
>>> Collection.save ({"docid": 1, "fail": false})
>>> Collection.find_one ()
{U'_id ': ObjectId (' ... '), u'fail': Falso, u'docid ": 1}
También puede declarar su propio modelo para una colección particular, en estilo declarativo:
>>> TestModel clase (Modelo):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; colección = 'test_db.test_collection'
>>> Collection.find_one ()

Estas clases tienen una serie de características adicionales más de un diccionario que pueden hacerlos mucho más cómodo de utilizar. Las teclas de documentos son accesibles como atributos:
>>> T = collection.find_one ()
>>> T.fail
Falso
>>> T.docid
1
Los documentos también son fácilmente persistieron a la base de datos:
>>> T.docid = 17
>>> T.save ()
>>> Clean.test_db.test_collection.find_one ()
{U'_id ': ObjectId (' ... '), u'fail': Falso, u'docid ": 17}
modelos que definen
Por encima, el atributo de la colección fue asignado a nuestro modelo de Foo. Este fue un acceso directo, sin embargo; si la base de datos y la recogida se asignan por separado, el modelo se puede averiguar el nombre de la colección completa. Si la colección y la base de datos no están presentes, micromongo intenta averiguarlo basado en el nombre de la clase y el módulo de su modelo. Por ejemplo, blog.Post se convertirá blog.post, o stream.StreamEntry se convertirá stream.stream_entry. Explícito es mejor que implícito, y está alentó que se establece la recogida manualmente.
Además de embalaje y desembalaje de los resultados de la base de datos, los modelos también pueden definir un documento de especificaciones que puede definir valores predeterminados y realizar la validación antes de guardar el modelo. Tome un modelo de entrada de blog trivial:
>>> De importación micromongo.spec *
>>> Class Post (Modelo):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; de recogida = 'test_db.blog_posts'
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; spec = dict (
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; autor = Field (requerido = True, default = 'jmoiron', type = cadena base),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; title = Campo (requerido = False, default = '', type = cadena base),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; publicado = Campo (requerido = True, default = False, escriba = [True, False]),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; cuerpo = Field (type = unicode),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; timestamp = Field (),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; )
>>> P = Post.new ()
>>> P

Algunas cosas están sucediendo aquí. Los campos que tienen un defecto estarán preparados para que por defecto si se requieren o no. Si un campo requerido no tiene un defecto, es inicializado en Ninguno.
Los campos que pueden tomar un argumento de tipo, que puede ser o bien un exigible que toma un valor y devuelve Verdadero o Falso, uno o más tipos de bases, o uno o más valores. Si se proporcionan uno o más tipos, isinstance se utiliza para comprobar que los valores son del tipo correcto. Si se proporcionan uno o más valores, el campo actúa como un tipo de enumeración, comprobando que los valores son en su conjunto de valores. Si no se da ningún tipo, validación siempre pasa en un campo a menos que sea necesario y ausente.
Si un campo en p se da un tipo no válido, entonces un ValueError se eleva:
>>> P.title = 10
>>> P.save ()
Rastreo (llamadas recientes más última):
& Nbsp; ...
ValueError: Las llaves no se correspondían con las especificaciones: ['title']
>>> Del p.author
>>> P.save ()
Rastreo (llamadas recientes más última):
& Nbsp; ...
ValueError: Faltan campos: ['autor'], los campos no válidos: ['title']
>>> P.title = 'Mi primera entrada de blog'
>>> P.author = 'jmoiron'
>>> P.published = True
>>> P.body = u "Este es mi primer blog .. & nbsp; Estoy tan emocionada!"
>>> P.save ()
Model.find
Para mayor comodidad y SECO, Model.find es un classmethod que va a utilizar el cursor del micromongo emitir un hallazgo en contra del derecho de cobro. Este método se comporta exactamente el mismo que Collection.find de pymongo.
clase Cursor ligeramente modificada de micromongo también hace un método order_by django-inspirado a disposición de todos los cursores (encontrar y todo lo que encadena fuera si devuelve un cursor). Puede pasar uno o más nombres de campo, con un líder opcional '-', para arreglar las cosas por orden ascendente o descendente.
Estos cambios le permiten utilizar la mayor parte de la potencia de pymongo sin tener que importarlo, y le permite evitar la repetición innecesaria de la localización de sus datos.
campo de subclases
Se le anima a crear sus propios campos que hacer lo que quiera. Subclases de campo tienen una pre_validate función de enlace que tengan un valor de entrada y puede transformarlo como quieran. Tenga en cuenta que esto sólo funcionará si los campos están realmente presentes; así que para obtener algo así como un auto_now_add en un DateTimeField, usted querrá asegurarse de que requiere y tener su pre_validate vuelta Ninguno en datetime.datetime.now ()

Requisitos :.

  • Python

Programas parecidos

SQL Relay
SQL Relay

27 Sep 15

MonetDB
MonetDB

11 May 15

Cdcat
Cdcat

20 Feb 15

ua2.mongolog
ua2.mongolog

20 Feb 15

Otro software de desarrollador Jason Moiron

redtape
redtape

14 Apr 15

pdf2zip
pdf2zip

11 May 15

speedparser
speedparser

14 Apr 15

Comentarios a la micromongo

Comentarios que no se encuentran
Añadir comentario
A su vez en las imágenes!