iT邦幫忙

0

在django上,如何能夠使用登入的方式,選擇要連接哪個資料庫

我的問題是我有兩個資料庫的內容
假設一個為A,一個為B

我希望我在最開始的login介面登入時,就能夠判斷是哪個資料庫內存的帳號密碼
並且我後面的程式內容都會使用連接到的這個資料庫
而不用還要再每一個model都特別設定

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
海綿寶寶
iT邦大神 1 級 ‧ 2021-07-18 11:50:30

Django 連接多個資料庫可以參考官網教學
(搜尋:Manually selecting a database)

至於「在最開始的login介面登入時,就能夠判斷是哪個資料庫內存的帳號密碼」
這點是辦不到的
最多只能「到 A,B 兩個資料庫做判斷」
看看是在那個資料庫裡
然後在之後的操作都使用該資料庫

看更多先前的回應...收起先前的回應...

那能不能請教您,您說的
『最多只能「到 A,B 兩個資料庫做判斷」
看看是在那個資料庫裡
然後在之後的操作都使用該資料庫』

是指說假設A有 account:test password:test
B有 account:test1 password:test1

這樣子的情況下有辦法在login介面判斷是登入哪個,然後接下來的操作都使用該資料庫是這樣子嗎?

謝謝您的回答!

我的意思是,如果使用者拿 id/password 來登入
你只能
1.拿 id/password 去A試看看可否登入
2.若A可以,之後都用 A 資料庫
3.若A不行,去B試看看可否登入
4.若B可以,之後都用 B 資料庫
5.若B不行,登入失敗

不可能
只看到 id/password 時就先決定要用 A 或 B 資料庫
(因為 id/password 要到資料庫去比對)

那能請教您,因為我現在是像附圖這樣子的登入,那我應該要如何做A嘗試可不可以,不行的話換去B看看可否登入(如果方便的話,能請教您實際大概的作法,或是使用什麼套件嗎,因為我找了很多資料,像是router或是auth等等,感覺都不太對,也或許是我才疏學淺,不曉得如何融會貫通)。假設說在B的時候可以登入,那我後面有用到的程式碼都會自動使用B的資料來做嗎(兩個資料庫架構跟table、column命名皆相同)
謝謝您的回覆,真的很需要您的幫助https://ithelp.ithome.com.tw/upload/images/20210718/20136728gUrIKQghYT.png

很抱歉
我不會寫 Django
/images/emoticon/emoticon25.gif

好的,沒關係,還是謝謝你跟我討論這麼久,我再去找找看有沒有人能夠幫助我

0
darrenchen2020
iT邦新手 4 級 ‧ 2021-07-19 09:08:14

如果資料表結構都相同,但不能合併的情況,

你可以試試看一開始只import 登入資料表的model,
當你確定資料在A model時,替換model內的連線配置,如下


choose = 'A'
    
class test(models.Model):
    key = models.CharField(primary_key=True)
    
    class Meta:
        app_label = choose # 將此處替換掉
        db_table = "tableName"

這部分你的choose要怎麼傳入就在試試看吧

不好意思,我想要請問您說一開始只import登入資料表的model這個部分是甚麼意思?

我本來的想法是,在import資料表時設定兩個,並讓別名不同EX:

from HKWeb.models import table_A_1 as table_A
from HKWeb.models import table_A_1 as table_B

所以會有兩個model的檔案,但好像有點笨。

後來去翻了一下django
在多資料庫配置中有一個using()可以使用,就可以在判斷到A時,用A的庫,反之則B

連結

我要發表回答

立即登入回答