2013-10-07 16 views
5

我正在構建一個我想發佈的應用程序,我將使用Python編寫應用程序。 我不想鎖定任何特定數據庫sql/nosql到我的應用程序的使用。 如何設計應用程序或模型層以不強制SQL/NOSQL方式來存儲數據。Python是否有SQL和NoSQL的ORM

是否有一個ORM可以同時使用這兩種存儲?我沒有找到一個。 通常情況下,我會使用sqlalchemy來確保人們可以使用MySQL/PostgreSQL/MSSQL/etc,但是將NOSQL添加到圖片似乎比我最初想象的要複雜。

我有這樣一些要求:

  • 我不想執行的任何存儲後端,這是爲了確保它不會使用的應用程序嚇唬人。
  • 它必須支持數據模式遷移(在安裝過程中或升級程序)

如果你有任何想法如何,我可以架構這些要求,我將不勝感激幫助。 是否有可能創建一個結構是這樣的:

+-----+ 
    + app + 
    +-----+ 
     | 
+-------------+ 
+ Data Access + 
+-------------+ 
     | 
+-----------+ 
+ SQL/NOSQL + 
+-----------+ 

感謝

回答

3

沒有沒有什麼這樣。

ORM或RDBMS可以依賴SQL作爲抽象底層數據庫的最低標準。大多數ORM構建在Python DB API的基礎之上(它由所有RDBMS Python綁定完成或多或少地完成)。

對於NoSQL,既沒有標準查詢語言也沒有標準驅動程序API。

所以沒有什麼比這兩個世界都適用。

已經有定義NoSQL語言通用查詢語言的方法。

比如有JsonIQ

http://www.jsoniq.org/

但沒有太多可幫助您在現實中。

+0

感謝您的回答,我將不得不決定是否喜歡使用SQL與NoSQL。我會看看jsoniq。 – DoRivard

0

您應該嘗試使用JSONiq的www.28.io實現。它可用作雲服務或內部部署。

0

我看到的最接近抽象層的是django-nonrel。這是django的一個分支,它支持Mongo,Google的NoSQL數據庫和其他一些數據庫。

一度很有希望,但由於django社區普遍拒絕添加NoSQL的想法,它已落後。