2012-04-20 70 views
9

我在尋找MondoDB Python ODM/ORM,它需要兩個世界上最好的:ODM/ORM &超快直接字典讀取。用於Python的輕量級Mongodb ODM/ORM

換句話說包應符合下列要求:

  1. 允許定義和執行模式。
  2. 允許驗證字段。
  3. 允許直接從mongodb讀取對象(無ODM/ORM開銷)。
    • 類別/對象直接返回通過pymongo可使用ODM/ORM層(W/O額外的查詢)來訪問。
    • 我會想象某種由pymongo司機對象,提供了訪問ORM汁加懶場(pymongo允許這樣的擴展)。
    • 想象一下用例:
      • 對於快速閱讀,我們直接去驅動,
      • 進行數據錄入,我們使用全ODM/ORM功能
  4. Geofields支持
  5. GridFS的支持正常的文件和圖像
  6. DBREF支持
  7. 不執行任何HID書房,框架的具體領域
  8. 將與瓶工作:)
  9. 擁有表單框架。
    • 形式覆蓋子列表/ subdicts
    • 骨幹基於表單將只是真棒
  10. 創建骨幹機型,集合,驗證基於Python的定義

我知道,我所要求的很多,但不會是真棒有這樣的東西:)

事實上,問題可以改寫成: 「哪些存在Python Mongodb ODM/ORM(MongoKit,MongoEngine)可以通過這種方式輕鬆擴展。「

回答

3

那麼,如果你需要一個ORM你需要的不是一個ORM,因爲MongoDB是不是一個關係數據庫,所以沒有映射到關係實體做的理論。

我認爲您必須檢查this post的答案以檢查是否您所需要的建議,我個人直接使用MongoDB + Python,因爲Mongo和Python的「本質」。

環顧四周,我發現這個庫,可以幫助你mongoEngine。就像Django ORM一樣。你應該檢查它。

+0

不深入細節mongo支持引用,所以我們有一個非常基本的關係數據庫子集。爲了正確性,我們可以通過ODM/ORM來引用。直接訪問pymongo非常好。一段時間以來我一直在傾向於這種方式。 MongoEngine太重了。 MongoKit也一樣。如果只有我能找到一種方法在已經加載的列表中使用它們,它們就可以。順便說一句:http://packages.python.org/micromongo/並不差,但仍然不是我正在尋找的東西。 – Munhitsu 2012-04-21 00:07:53

+0

那麼,當您使用ORM或ODM時,您知道這將不如直接使用數據庫連接那麼輕。所以,我的建議是直接從Python中使用,你說的很好,只是起作用。 – Omar 2012-04-24 23:03:16

6

首先,我很想擁有它。

根據我的研究

銘是一個非常有前途的蒙戈ODM驅動程序:http://merciless.sourceforge.net/

MongoEngine太大修改它以適應您的需求/用例。 MongoKit也一樣。

有一些希望在micromongo:http://packages.python.org/micromongo

可能是一個很好的起點。

BTW:嗯......我不知道你在寫什麼,但其覆蓋,你可以很容易地建立管理界面,並最終達到其下一代Django表單和驗證。祝你好運!

+0

顯然,micromongo自2012年以來一直未動。但是,有一個新的ODM即將到來:[umongo](http://umongo.readthedocs.io/en/latest/)。它不像問題中所要求的那樣功能全面,但它比MongoEngine更簡單,所以您可以更輕鬆地構建它。 – 2016-11-29 09:01:42

1

umongo出生久,有人問了。雖然相對年輕,但它正在成熟。像micromongo一樣,它的目標是簡單(「u」代表μ/微),所以它不能提供問題中所要求的衆多特性,但它是一個理想的基礎。

它使用棉花糖內部的模型模式/驗證,這樣你就可以用棉花糖其他庫愉快地使用它。我在Flask應用程序中使用它,它使用Marshmallow提供REST API來分析輸入/輸出。這限制了數據庫和API模式之間的重複數量。該應用程序使用Marshmallow環境中的其他庫(webargs/apispec)。

既然你已經收集直接訪問,您可以使用純pymongo查詢。

而且,它不僅與pymongo也與異步驅動程序兼容。