2014-11-24 165 views
0

我正在一個大的&複雜的Django項目。我被要求準備接受虛擬數據以測試它的生產準備情況(沒有人期待「樓上」的決定,所以每個人都被忽視了)。Django,使用兩個相同的項目數據庫

爲此,我被要求創建另一個數據庫(當前版本的確切副本),以便填充數以百萬計的假數據。

我徘徊,如果可能的話,使用「假數據數據庫」與當前項目,並讓它「巧妙」選擇使用哪個數據庫,取決於URL(也許)。例如:

http://example.com/login/會映射來自工作數據庫的數據,並且http://test.example/com/login會自動將數據映射到「假數據」數據庫。兩者都使用相同的django項目和相同的Apache虛擬主機條目。

這是否有意義?或者我應該創建一個全新的django項目,而不是(也修改Apache)?

PS:該項目目前正處於開發過程中,所以我們可以使用同一個服務器進行測試和基準..

回答

1

您可以在Django使用多個數據庫。請參閱:https://docs.djangoproject.com/en/dev/topics/db/multi-db/#multiple-databases

但是從您的描述來看,聽起來更像是您只需要2個不同的環境。一個用於接受此虛擬數據的非生產環境,以及另一個生產環境。你可以有兩個不同的settings.py,並根據環境導入適當的一個。

+0

謝謝,我怎樣才能導入不同的settings.py取決於網址? – xpanta 2014-11-25 06:30:30

0

如果我理解這個問題很好,那麼這是方法我會採取

1)在settings.py文件(我用mysql)

DATABASES = { 
    'default':{}, 
    'db1': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': 'Database_1', 
     'USER': '', 
     'PASSWORD': '', 


    }, 
    'db2':{ 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': 'Database_2', 
     'USER': '', 
     'PASSWORD': '', 


    } 
} 

2)在urls.py文件 (樣本URL模式)

urlpatterns = [ 
    url(r'^/login/$', views.xzy, {'database': 'db1'}), 
    url(r'^com/login/$', views.xzy, {'database': 'db2'}) 

] 

3)xzy(request, database),你可以做到以下幾點:

records = Model.objects.using(database).all() 

您也可以使用'數據庫路由器'。 https://docs.djangoproject.com/en/dev/topics/db/multi-db/#automatic-database-routing

這應該在一個簡單的環境中工作。如果你正在使用類似elasticsearch或solr的東西,那麼這種方法需要修改。

希望這會有所幫助。

相關問題