FAQ:資料庫與模型¶
如何查看 Django 正在執行的原始 SQL 查詢?¶
請確保您的 Django DEBUG
設定為 True
。然後執行以下操作:
>>> from django.db import connection
>>> connection.queries
[{'sql': 'SELECT polls_polls.id, polls_polls.question, polls_polls.pub_date FROM polls_polls',
'time': '0.002'}]
connection.queries
僅在 DEBUG
為 True
時可用。 它是一個依照查詢執行順序排列的字典列表。每個字典都包含以下內容:
sql
- 原始 SQL 語句time
- 語句執行所花費的時間,以秒為單位。
connection.queries
包括所有 SQL 語句 – INSERT、UPDATE、SELECT 等。 每次您的應用程式訪問資料庫時,都會記錄該查詢。
如果您正在使用多個資料庫,您可以在 connections
字典的每個成員上使用相同的介面
>>> from django.db import connections
>>> connections["my_db_alias"].queries
如果您需要在函式中的任何位置手動清除查詢列表,請調用 reset_queries()
,如下所示:
from django.db import reset_queries
reset_queries()
我可以使用 Django 搭配現有的資料庫嗎?¶
是的。請參閱與舊資料庫整合。
如果我對模型進行更改,我該如何更新資料庫?¶
請查看 Django 對於結構 遷移
的支援。
如果您不介意清除資料,您專案的 manage.py
工具具有 flush
選項,可將資料庫重置為在執行 migrate
後立即的狀態。
Django 模型是否支援多欄主鍵?¶
否。僅支援單欄主鍵。
但這在實務上並不是問題,因為沒有任何東西會阻止您新增其他約束(使用 unique_together
模型選項或直接在資料庫中建立約束),並在該層級強制執行唯一性。單欄主鍵是管理介面等功能所必需的;例如,您需要單一值來指定要編輯或刪除的物件。
Django 是否支援 NoSQL 資料庫?¶
Django 本身並未正式支援 NoSQL 資料庫。然而,有許多附屬專案和分支允許在 Django 中使用 NoSQL 功能。
您可以在 Wiki 頁面上查看一些專案。
如何將資料庫特定選項新增至我的 CREATE TABLE 語句中,例如指定 MyISAM 作為表格類型?¶
我們嘗試避免在 Django 程式碼中新增特殊情況來容納所有資料庫特定的選項,例如表格類型等。如果您想使用任何這些選項,請建立一個遷移,其中包含一個 RunSQL
操作,其中包含執行您想要執行的操作的 ALTER TABLE
語句。
例如,如果您使用的是 MySQL 並希望您的表格使用 MyISAM 表格類型,請使用以下 SQL:
ALTER TABLE myapp_mytable ENGINE=MyISAM;