2012-06-01 44 views
6

我有兩個應用程序都訪問同一個數據庫。第一個客戶端通過TCP連接並使用SQLAlchemy寫入數據庫。第二個是使用Django的更典型的webapp。兩者都有讀/寫要求。在同一數據庫中同時使用SQLAlchemy和Django ORM

我想統一數據庫訪問層,但採摘剛剛SQLAlchemy的或只是Django是沒有吸引力的,因爲:

  1. 我想用Django的身份驗證,權限,也許第三方插件,這需要Django ORM(糾正我,如果我錯了)。
  2. 對於第一個應用程序,使用SQLAlchemy(到目前爲止)比嘗試在Django應用程序之外使用Django ORM簡單得多 - 它是一個TCP/IP服務器應用程序,而不是HTTP/Web應用程序。

將這兩個ORM混合在同一數據庫中是否存在任何問題?

在哪個系統(Django,SQLA)中我應該創建模型,還是使用某種類型的自省例如Django inspectdb

+0

我剛剛找到[django-sqlalchemy](https://code.google.com/p/django-sqlalchemy/wiki/Roadmap)項目。我不知道它是否適合您的需求,但絕對值得一讀。 – noisy

回答

6

首先 - 在manage.py,WSGI處理程序和其他HTTP相關的東西之外使用Django ORM並不難。你可以使用它的任何python腳本,但它需要一些初始化(example)。其次 - SQLA是一個非常強大的工具,它能夠完成在Django ORM中很難實現的東西(如真正的多態性和多態查詢)。如果我不得不選擇,我會親自選擇使用Django ORM作爲創建模型的平臺,然後手動將它們映射到SQLA中,因爲它更靈活,並且希望能夠採用。在相反的情況下,這可能不起作用。

最後,既然你可以在兩邊都使用Django ORM,而你只需要必須因爲插件使用了Django ORM,所以我建議放棄SQLA。這是一個強大的工具,但也相當複雜。在一個數據庫上運行兩個不同的ORM可能會導致未來發生意外問題,並增加了應用程序的複雜性,因此維護起來會更加困難。

+1

謝謝。我會接受你的建議並放棄SQLA。 – user1431368

相關問題