[英]Using Django with legacy databases containing multiple tables
我有一個用php編寫的舊應用程序,該應用程序提供對組織到37個不同數據庫中的大型數據集的訪問,每個數據庫包含多個表。 每個表代表來自不同設備的數據,每個數據庫代表來自單個時間段的數據,因此結構如下:
Database_Time_Period_one
table machine 1
table machine 2
table machine 3
and so on...
Database_Time_Period_two
table machine 1
table machine 2
table machine 3
table machine 4
and so on...
這些表的長度各不相同,但通常包含500,000到1,000,000行之間的數據。
該應用程序需要擴展,並且需要一個新的前端,並且正在考慮使用Django對其進行重做,但是我遇到了一個概念性的問題,希望有人可以提供幫助。 php代碼非常簡單-用戶在前端選擇時間段和感興趣的表,這用於構建MySQL SELECT查詢,該查詢檢索相關數據,然后將其存儲在數組對象中。 該查詢是用單行代碼構造的,該代碼行實際上使用從前端獲取的變量來標識數據庫,而另一個用於表。 數據庫和表的命名遵循一種模式,該模式包括一個連續的數字部分,這簡化了查詢的結構。
當我從最初進入Django的過程中了解到事情時,django模型代表來自單個數據庫的單個表,因此為了能夠訪問不同數據庫中的所有表,我需要為每個表創建一個模型。 這意味着大約有200個模型。 另外,我需要某種方式告訴django模型應該鏈接到哪個數據庫以及該數據庫中的哪個表。 最后,我必須能夠在代碼中選擇用於任何給定查詢的模型。 我已經研究過了,似乎有可能做到這一點,但是與相對簡單的php代碼相比,這意味着要創建大量的路由器和許多代碼。
是否有可能從本質上告訴django的簡單代碼:“轉到數據庫x,查看表y,然后選擇以下列”,即使這意味着繞過模型的使用而只是將數據讀入數組中?
我已經在網上搜索了解決方案,但是找不到一個可以解決這種情況的示例,盡管django文檔確實說明了多個數據庫的使用,但它似乎並未提供訪問數據庫的簡單方法我沒有創建看起來非常龐大和繁瑣的代碼體,並且使用原始查詢的解釋似乎仍然依賴於“每表一個模型”范例。 我確信我的困難歸因於我對Django的有限經驗,並且有一種方法可以做我想做的事情,但是現在我被困住了。
如果某人的django經驗比我所能指示的方向要正確得多,或者告訴我這是否看起來像django不適合的情況,那將非常有幫助。
您是否知道django的inspectdb管理命令:
$ python manage.py inspectdb > models.py
這將為您生成模型,您可以根據這些模型使用django orm進行數據處理。
http://docs.djangoproject.com/en/dev/ref/django-admin/#inspectdb
https://docs.djangoproject.com/en/1.7/howto/legacy-databases/
如果您認為更簡單,則可以直接編寫sql代碼,而不創建模型。 在這里查看: https : //docs.djangoproject.com/en/1.7/topics/db/sql/#executing-custom-sql-direct
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.