micromongo

צילום מסך תוכנה:
micromongo
פרטי תוכנה:
גרסה: 0.1.4
טען תאריך: 14 Apr 15
מפתחים: Jason Moiron
רשיון: ללא תשלום
פופולריות: 40

Rating: 5.0/5 (Total Votes: 1)

micromongo היא שכבה זעירה סביב pymongo שמאפשרת לך ליצור כיתות בסגנון ORM פשוטות אשר יכול לבצע אימות, מאפשרות גישה לנקודת מסמכים, תוצאות queryset אוטומטית לעטוף, ולתת לך מראש / פוסט להציל ווים.
זה מתוכנן עם microframeworks בראש, אבל הוא יישום ומסגרת אגנוסטי. היא נועדה לפשט את השימוש בpymongo ולספק כלים לניבים משותפים, לא לטשטש pymongo או MongoDB ממבני הנתונים שלך.
אתם מוזמנים לפתוח נושאים או לשלוח בקשות משיכה על GitHub של micromongo
micromongo עושה כמה החלטות עיצוב בשם הפישוט שלא יכול לעבוד בשבילך:
& Nbsp; - & nbsp; micromongo שומר על חיבור גלובלי אחת, כך שאתה לא יכול להיות מודלים המתחברים לשרתים מרובים MongoDB
& Nbsp; - & nbsp; יש חופן של שמות דגמים ותכונת שמות מסמך שלא יעבדו עם מודלים micromongo; אלה יהיו מכוסים במסמכים מלאים
& Nbsp; - & nbsp; אתה יכול להיות רק מודל אחד לאוסף
התחלת עבודה
כדי להתחיל עם micromongo, רק לייבא אותו:
>>> מיבוא micromongo להתחבר, דגם
>>> = ג להתחבר ()
חיבור לוקח אותם הנימוקים כאובייקט החיבור של pymongo, ומתנהג באופן כמעט זהה, פרט לכך שהוא מנסה לחזור באופן אוטומטי תוצאות שאילתא עטופות בכיתות הדגם המתאימות. אובייקט החיבור שאתה יוצר באמצעות שיחה זו יהיה במטמון ומשמש את המתקנים בסגנון ORM השונים, כמו Model.save (), Model.proxy, וכו 'אם אתה רוצה אובייקט חיבור נקי, סטנדרטי, אתה יכול לקבל בקלות :
>>> מclean_connection יבוא micromongo
>>> נקי = clean_connection ()
שים לב שclean_connection לא לוקח טיעונים ותמיד לחזור חיבור כיתה נקייה עם אותן ההגדרות כמו חיבור micromongo הנוכחי.
עם אובייקטי החיבור האלה, אתה יכול ליצור מסדי נתונים או לעשות כל מה שהיית עושה עם חפצי pymongo רגילים:
>>> Db = c.test_db
>>> אוסף = db.test_collection
>>> Collection.save ({"docid": 1, "נכשל": False})
>>> Collection.find_one ()
{: ', U'fail' (...) ': False, u'docid': u'_id ObjectId '1}
גם אתה יכול להכריז על הדגם שלך לאוסף מסוים בסגנון הצהרתי:
>>> TestModel כיתה (Model):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; אוסף = 'test_db.test_collection'
>>> Collection.find_one ()

יש שיעורים אלה מספר תכונות נוספות על מילון שיכול לגרום להם הרבה יותר נוח לשימוש. מפתחות המסמך כולם נגישים כתכונות:
>>> T = collection.find_one ()
>>> T.fail
False
>>> T.docid
1
המסמכים גם התעקשו בקלות למסד הנתונים:
>>> T.docid = 17
>>> T.save ()
>>> Clean.test_db.test_collection.find_one ()
{: ', U'fail' (...) ': False, u'docid': u'_id ObjectId '17}
מודלים הגדרה
לעיל, תכונת האוסף הוטלה על מודל Foo שלנו. זה היה קיצור דרך, כי; אם מסד הנתונים ואוסף מוקצים בנפרד, הדגם יכול להבין את שם אוסף המלא. אם האוסף ומסד הנתונים אינם נוכחים, micromongo מנסה להבין את זה מבוסס על שם המחלקה ומודול של הדגם שלך. לדוגמא, blog.Post יהפוך blog.post, או stream.StreamEntry יהפוך stream.stream_entry. מפורש הוא טוב יותר מאשר משתמע, וזה עודד את שאתה מגדיר את האוסף באופן ידני.
מלבד אריזה ופריק תוצאות מבסיס הנתונים, מודלים יכולים גם להגדיר מסמך המפרט שיכול להגדיר ברירות מחדל ולבצע אימות לפני שמירת המודל. קח לכתוב בלוג מודל של מה בכך:
>>> מיבוא micromongo.spec *
>>> כיתה לפרסום (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; מחבר = שדה (חובה =, = 'jmoiron' True ברירת מחדל, סוג = basestring),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; title = שדה (חובה = False, ברירת מחדל = '', סוג = basestring),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; פורסם = שדה (True נדרש =, ברירת מחדל = False, סוג = [נכון, שקר]),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; גוף = שדה (סוג = יוניקוד),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; חותמת = שדה (),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; )
>>> P = Post.new ()
>>> P
<הודעה: {'title': u '', 'מחבר': u'jmoiron ',' פרסם ': False}>
כמה דברים קורה כאן. שדות שיש לי ברירת מחדל מאותחלים שלברירת מחדל אם הם נדרשים או לא. אם שדה נדרש אין ברירת מחדל, זה אותחל לאף אחד.
שדות יכולים לקחת טיעון סוג, אשר יכול להיות callable שלוקח ערך ומחזיר אמת או שקר, אחד או יותר סוגי בסיס, או אחד או יותר ערכים. אם אחד או יותר סוגים מסופקים, isinstance משמש לבדיקה שערכים הם הסוג הנכון. אם ערכים אחת או יותר מסופקים, שדה פועל כסוג enum, בדיקה שערכים נמצאים במערכת הערכים שלה. אם לא סוג נתון, אימות תמיד עוברת בשדה, אלא אם כן הוא נדרש ונעדר.
אם שדה בעמ ניתן סוג לא חוקי, אז ValueError עולה:
>>> P.title = 10
>>> P.save ()
Traceback (השיחה האחרונה שעברה):
& Nbsp; ...
ValueError: מקשים לא התאימו למפרט: ['כותרת']
>>> Del p.author
>>> P.save ()
Traceback (השיחה האחרונה שעברה):
& Nbsp; ...
ValueError: שדות חסרים: ['מחבר'], שדות לא חוקיים: ['כותרת']
>>> P.title = 'blogpost הראשון שלי "
>>> P.author = 'jmoiron'
>>> P.published = True
>>> P.body = u "זוהי ההודעה הראשונה שלי בבלוג .. & nbsp; אני כל כך מתרגש!"
>>> P.save ()
Model.find
לנוחיות ויבשה, Model.find הוא classmethod שישתמש הסמן של micromongo להוציא ממצא כנגד הגבייה הנכונה. שיטה זו מתנהגת בדיוק אותו הדבר כמו Collection.find של pymongo.
כיתת הסמן שונה מעט של micromongo גם עושה שיטת order_by בהשראת אופטימיות זמינה לכל הסמנים (למצוא וכל דבר שאתה כובל את אם היא מחזירה את סמן). אתה יכול לעבור שמות תחום אחד או יותר, עם מוביל אופציונאלי '-', כדי למיין את הדברים על ידי בסדר עולה או יורד.
שינויים אלה מאפשרים לך להשתמש ברוב כוחו של pymongo מבלי לייבא אותו, ומאפשר לך למנוע חזרה מיותר של מיקום הנתונים שלך.
subclassing שדה
אתם מוזמנים ליצור שדות שיעשו מה שאתה רוצה משלך. יש לי subclasses שדה pre_validate פונקצית וו אשר לוקח ערך הנכנס ויכול להפוך אותו אולם הם רוצים. שים לב שזה יעבוד רק אם השדות הם למעשה הווה; כך לקבל משהו כמו auto_now_add על DateTimeField, אתה רוצה לעשות את זה נדרש ויש לי pre_validate הופך אף אחד לdatetime.datetime.now ()

דרישות :.

  • Python

תוכנה דומה

Cyparkler
Cyparkler

2 Jun 15

datanommer
datanommer

20 Feb 15

datastore
datastore

20 Feb 15

תוכנות אחרות של יזם Jason Moiron

pdf2zip
pdf2zip

11 May 15

speedparser
speedparser

14 Apr 15

redtape
redtape

14 Apr 15

תגובות ל micromongo

תגובות לא נמצא
להוסיף הערה
הפעל את התמונות!