這是我的專案結構

我可以db.sqlite3通過直接在我的視圖檔案中匯入模型來訪問由 Django 創建的默認 SQLite 資料庫
喜歡 - from basic.models import table1
現在,我有另一個資料庫UTF.db,它是由其他人創建的,我想訪問它的資料并對檢索到的資料執行正常的 QuerySet 操作
問題是我不知道如何匯入該資料庫中的表,因為它們不在我的專案中的任何模型檔案中,因為它是由其他人創建的
我嘗試將UTF.db資料庫中的表添加到models.py檔案中,方法是首先將其添加到settings.py檔案中,如下所示
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
},
'otherdb':{
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'UTF.db',
}
}
然后使用inspectdb命令將表添加到現有models.py檔案中
我試過的命令 -
python manage.py inspectdb > models.py
但是,這只會導致我的 models.py 檔案被清空
有誰知道如何解決這個問題?
最后,我希望通過匯入相應的模型來匯入我的視圖檔案中的表資料
uj5u.com熱心網友回復:
您可以指定檔案中指定的特定資料庫
python manage.py inspectdb --database=otherdb > your_app/models.py
此外,如果可能,將 otherdb 放在不同的應用程式中會更好。
uj5u.com熱心網友回復:
您可以將第二個資料庫附加到第一個資料庫并在第一個資料庫中使用它。您可以在單個 sql 查詢中使用來自兩個資料庫的表。這是檔案https://www.sqlite.org/lang_attach.html。
attach database '/path/to/dbfile.sqlite' as db_remote;
select *
from some_table
join db_remote.remote_table on ....
detach database db_remote;
uj5u.com熱心網友回復:
@sevdimali 的答案可以很好地從現有資料庫創建新模型
完成后,您需要使用命令 -
python manage.py makemigrations
將更改添加到遷移檔案夾
然后使用命令
python manage.py migrate --fake-initial
將新更改添加到您的資料庫
注意:在添加新表時使用 --fake-initial 忽略已創建的表(以免重新創建它們)
如果沒有預先存在的模型,您可以使用
python manage.py migrate
就像你平時做的那樣
現在,在您的視圖中匯入資料庫模型時,您可以撰寫
from Appname.models import Tablename
其中 Appname 是您添加新模型的應用程式
并訪問它的資料
qs=Tablename.objects.using('otherdb').all()
注意:otherdb是settings.py檔案中指定的外部資料庫的名稱
現在您可以以類似的方式訪問您的所有資料!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/370842.html
下一篇:UPDATE查詢更新所有資料
