micromongo

Software skärmdump:
micromongo
Mjukvaruinformation:
Version: 0.1.4
Ladda upp dagen: 14 Apr 15
Utvecklare: Jason Moiron
Licens: Gratis
Popularitet: 2

Rating: nan/5 (Total Votes: 0)

micromongo är en liten lager runt pymongo som låter dig skapa enkla ORM-stil klasser som kan utföra validering, tillåter dot tillgång till handlingar, auto-wrap queryset resultat, och ger dig före / efter spara krokar.
Den är utformad med microframeworks i åtanke, men är tillämpning och ramverk agnostiker. Det är tänkt att förenkla användningen av pymongo och tillhandahålla verktyg för vanliga idiom, inte skymma pymongo eller mongodb från dina datastrukturer.
Du är välkommen att öppna frågor eller skicka pull förfrågningar om micromongo s github
micromongo gör några designbeslut i namn av förenkling som kanske inte fungerar för dig:
& Nbsp; - & nbsp; micromongo upprätthåller en enda global anslutning, så du kan inte ha modeller som ansluter till flera MongoDB servrar
& Nbsp; - & nbsp; Det finns en handfull av modellnamn och dokumentattributnamn som inte fungerar med micromongo modeller; Dessa kommer att behandlas i de fullständiga docs
& Nbsp; - & nbsp; du kan bara ha en modell per samling
komma igång
Till att börja med micromongo, bara importera den:
>>> Från micromongo import ansluta, Model
>>> C = connect ()
connect tar samma argument som pymongo s Connection-objekt, och beter sig nästan identiskt, förutom att den försöker automatiskt tillbaka frågeresultat insvept i lämpliga modellklasser. Anslutnings objekt som du skapar via denna ansökningsomgång kommer att cachas och användas av de olika ORM-stil faciliteter, liksom Model.save (), Model.proxy, etc. Om du vill ha en ren, standard Connection-objekt, du kan få en lätt :
>>> Från micromongo import clean_connection
>>> Ren = clean_connection ()
Observera att clean_connection inte tar argument och kommer alltid att återgå en ren anslutning klass med samma inställningar som den aktuella micromongo anslutningen.
Med dessa anslutningsobjekt kan du skapa databaser eller göra vad du gör med vanliga pymongo objekt:
>>> Db = c.test_db
>>> Samling = db.test_collection
>>> Collection.save ({"DocID": 1, "misslyckas": False})
>>> Collection.find_one ()
{U'_id ': ObjectId ("..."), u'fail': Falskt, u'docid ': 1}
Du kan också förklara din egen modell för en viss samling i deklarativ stil:
>>> Klass TestModel (Model):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; samlingen = 'test_db.test_collection'
>>> Collection.find_one ()

Dessa klasser har ett antal ytterligare funktioner över ett lexikon som kan göra dem mycket bekvämare att använda. Dokumentet tangenterna är alla tillgängliga som attribut:
>>> T = collection.find_one ()
>>> T.fail
Falsk
>>> T.docid
1
Dokumenten är också lätt kvarstod till databasen:
>>> T.docid = 17
>>> T.save ()
>>> Clean.test_db.test_collection.find_one ()
{U'_id ': ObjectId ("..."), u'fail': Falskt, u'docid ': 17}
definierar modeller
Ovan ades samlingen attributet tilldelats vår Foo modell. Detta var en genväg, men; Om databasen och insamling delas separat, kan den modell räkna in hela samlingen namnet. Om insamling och databasen inte är närvarande, försöker micromongo att räkna ut det utifrån klass och modulen namnet på din modell. Till exempel kommer blog.Post bli blog.post eller stream.StreamEntry blir stream.stream_entry. Explicit är bättre än implicit, och det är uppmuntrande att du ställer in samlingen manuellt.
Förutom packning och uppackning resultat från databasen, kan modellerna också definiera ett spec dokument som kan definiera standardinställningar och utföra validering innan du sparar modellen. Ta en trivial blogginlägg modell:
>>> Från micromongo.spec import *
>>> Klass Post (Model):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; insamlings = 'test_db.blog_posts "
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; spec = dict (
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; författare = Fält (krävs = Sant, default = 'jmoiron', typ = basestring),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; title = Fält (krävs = False, default = '', typ = basestring),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; publicerat = Fält (krävs = Sant, default = False, typ = [Sant, Falskt]),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; kropp = Fält (type = unicode),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; tidstämpel = Fält (),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; )
>>> P = Post.new ()
>>> P

Några saker som händer här. Fält som har en standard initieras till denna standard om de är skyldiga eller inte. Om ett obligatoriskt fält inte har en standard, det initieras till Ingen.
Fält kan ta en typ argument, som antingen kan vara en inlösbara som tar ett värde och returnerar sant eller falskt, en eller flera oädla typer, eller en eller flera värden. Om en eller flera typer tillhandahålls, isinstance används för att testa att värdena är rätt typ. Om ett eller flera värden finns, Field fungerar som en enum typ, kontrollera att värdena är i sin värdegrund. Om ingen typ ges passerar validering alltid på ett fält om det krävs och frånvarande.
Om ett fält i p ges en ogiltig typ, sedan en ValueError höjs:
>>> P.title = 10
>>> Energispar ()
Spårnings (senaste samtalet sist):
& Nbsp; ...
ValueError: Nycklar matchade inte spec: ['title']
>>> Del p.author
>>> Energispar ()
Spårnings (senaste samtalet sist):
& Nbsp; ...
ValueError: Saknade fält: ['författare'], Ogiltiga fält: ['title']
>>> P.title = 'Min första blog "
>>> P.author = 'jmoiron'
>>> P.published = Sant
>>> P.body = u "Det här är mitt första blogginlägg .. & nbsp; Jag är så glada!"
>>> Energispar ()
Model.find
För bekvämlighet och DRY är Model.find en classmethod som kommer att använda micromongo markör för att utfärda ett fynd mot rätt samlingen. Denna metod fungerar exakt samma som pymongo s Collection.find.
micromongo s något modifierad Markör klass gör också en django-inspirerad order_by metoden tillgänglig för alla markörer (hitta och allt du kedja av om den returnerar en markör). Du kan skicka en eller flera fältnamn, med en valfri ledande '-', för att sortera saker efter stigande eller fallande ordning.
Dessa förändringar gör att du kan använda de flesta av makt pymongo utan att behöva importera den, och låter dig undvika onödiga upprepningar av var dina data.
fält subclassing
Du uppmuntras att skapa egna fält som gör vad du vill. Fält subklasser har en krok funktion pre_validate som tar ett inkommande värde och kan omvandla det men de vill ha. Observera att detta endast kommer att fungera om fälten är närvarande; så för att få något som liknar en auto_now_add på en DateTimeField, kommer du vill göra det som krävs och ha sin pre_validate förvandla Inget i datetime.datetime.now ()

Krav :.

  • Python

Liknande mjukvara

phpminiadmin
phpminiadmin

2 Jun 15

Portofino
Portofino

17 Feb 15

Nomad
Nomad

20 Feb 15

XQuark Bridge
XQuark Bridge

2 Jun 15

Annan programvara för utvecklare Jason Moiron

pdf2zip
pdf2zip

11 May 15

redtape
redtape

14 Apr 15

speedparser
speedparser

14 Apr 15

Kommentarer till micromongo

Kommentarer hittades inte
Kommentar
Slå på bilder!