1. 程式人生 > 資料庫 >django連線oracle時setting 配置方法

django連線oracle時setting 配置方法

下一步是將新建立的應用程式與專案相關聯。為此,您需要編輯 myproj 資料夾中的 settings.py 檔案,將字串“myproj.myapp”追加到 INSTALLED_APPS 位元組組中,如下所示:

INSTALLED_APPS = ( 
‘django.contrib.auth',‘django.contrib.contenttypes',‘django.contrib.sessions',‘django.contrib.sites',‘myproj.myapp' 
) 

您已完成了應用程式主幹的構建。然而,在可以檢視應用程式是否正常工作之前,需要執行一些額外步驟。當然,這些步驟可能會有所不同,具體取決於您希望應用程式執行的操作。例如,如果您要構建不與資料庫互動的簡單應用程式,則不需要將資料庫資訊放在 settings.py 配置檔案以及設計資料模型中。但在大多數情況下,您至少需要執行以下五個步驟:

在 settings.py 中指定資料庫資訊

建立模型

建立模板

建立檢視

在 urls.py 中配置 URL 模式

在繼續上述步驟之前,讓我們看一下 Django 應用程式的高階檢視,以便您可以更好地瞭解 Django 中的元件如何工作。下圖示意性地顯示了 Django 應用程式如何工作以滿足使用者請求。

根據此圖中的圖示,工作方式如下:

使用者輸入支援 Django 的站點的 URL 或在此站點的已載入頁面上執行操作,從而將請求傳送到託管此站點的 Web 伺服器。

Django 的 URL 排程程式遍歷 urls.py 檔案中的 URL 模式,並選擇第一個與使用者請求的 URL 匹配的模式,然後呼叫與所發現模式相關聯的檢視(Python 回撥函式)。

檢視使用資料模型獲得資料庫資料,然後載入指定模板(已嵌入特殊模板標記的 HTML 頁面;它類似於 Java 中的 JavaServer Page),並向其傳遞上下文(包括對映到模板變數名稱的已獲得資料)。

最後,檢視返回由已呈現模板填充的 HttpResponse 物件,如果出現錯誤,則返回 HTTP 異常。

您可以看到,Django 基於將 Web 應用程式邏輯分為模型、檢視和模板的概念,因此有效地將業務邏輯和展示分離開來。通常,這類似於當今許多其他 Web 框架中使用的模型-檢視-控制器 (MVC) 範例。然而,在 Django 中,檢視更像控制器,介於模型和模板之間。而 Django 模板更接近於 MVC 檢視,因為這些模板負責使用從模型中獲得的資料生成適當的使用者介面。

現在您已掌握 Django 的概念,讓我們繼續在本部分開頭啟動的專案,構建一個與 Oracle 資料庫互動的簡單應用程式。

配置 Django 以便與 Oracle 資料庫互動

您必須先告訴 Django 如何連線到資料庫,才能利用 Django 的資料庫相關特性。您可以通過在專案的 settings.py 配置檔案中配置資料庫相關設定來執行此操作。對於在上一部分開頭建立的專案,您需要編輯 django-admin.py 生成的 myproj 目錄中的 settings.py。

在文字編輯器中開啟 settings.py 檔案,並根據您的資料庫編輯與資料庫相關的設定。例如,您可能按如下方式編輯它們:

DATABASE_ENGINE = ‘oracle' 
DATABASE_NAME = ‘XE' 
DATABASE_USER = ‘hr' 
DATABASE_PASSWORD = ‘hr' 
DATABASE_HOST = ‘localhost' 
DATABASE_PORT = ‘1521' 

上述方式假設您在資料庫中安裝了 HR 演示模式並解除了鎖定。然而,在實際專案中,您很可能會使用針對特定應用程式設計的自定義模式。需要注意的是,Django 可以省去您自己建立基礎表的麻煩。完成資料模型的構建之後,您可以執行 manage.py syncdb 命令以自動建立資料庫表 — 針對 models.py 檔案中的每個資料模型建立一個數據庫表。但為了簡單起見,本文中的示例將使用 HR 演示模式中已經存在的表。

現在您已指示 Django 與特定 Oracle 資料庫互動,可以繼續構建資料模型。

與模型的物件關係對映

如前所述,Django 支援與模型的物件關係對映,其中每個模型對映到單個數據庫表,並表示子類為 django.db.models.Model 標準類的 Python 類。

以下示例說明如何針對現有表定義模型。在此示例中,您將使用 HR 的 employees 表,僅針對此表的選定欄位定義模型欄位。在 myproj/myapp 目錄中開啟 models.py 檔案並進行編輯,新增 employees 類,如下所示:

from django.db import models

Create your models here.
class employees(models.Model): 
employee_id = models.IntegerField(primary_key=True) 
first_name = models.CharField(max_length=20,null = True) 
last_name = models.CharField(max_length=25) 
email = models.CharField(max_length=25) 
class Meta: 
db_table = “employees” 

請注意,此處使用了一些模型欄位選項。通過設定 primary_key = True,可顯式指定此欄位是模型的主鍵。max_length 是 CharField 這一字串欄位所需的引數。如果將可選的 null 引數設定為 True,即表示告訴 Django 將空值作為 NULL 儲存到資料庫中。預設情況下,此引數設定為 False。要檢視欄位選項和欄位型別的完整列表,您可以參閱 Django 文件中的 Model 欄位參考頁面。

在上述示例中,另一個需要注意的事項是類 Meta 的使用,您可以通過此類為模型提供元資料選項。在此特定示例中,您使用 db_table 選項顯式指定模型要對映到的表的名稱。實際上,預設情況下,Django 假設表的名稱由模型類的名稱和應用程式名稱組成(通過下劃線 (_) 符號分隔)。因此,在此特定示例中,Django 將查詢名為 myapp_employees 的表。當然,db_table 並不是您可用於模型內部類 Meta 的唯一選項。您可以在 Django 文件的 Model Meta 選項頁面上檢視可用的 Meta 選項列表。

此處討論的示例很簡單,因為它僅顯示到單個數據庫表的對映。但實際上,您通常必須處理一組通過外來鍵約束相互關聯的基礎資料庫表。為了解決此問題,Django 提供了 ForeignKey 欄位型別,可讓您定義表示多對一關係的模型欄位。

幸運的是,HR 演示模式僅包含一組通過外來鍵約束相互關聯的表。例如,您可能選擇 departments 表(其 manager_id 欄位是 employees 表中 employee_id 的外來鍵),並定義以下模型(將其新增到 models.py 檔案中):

class departments(models.Model): 
department_id = models.IntegerField(primary_key=True) 
department_name = models.CharField(max_length=30) 
manager = models.ForeignKey(employees,null = True) 
class Meta: 
db_table = “departments” 

看一下上述模型定義,您可能已經注意到,它針對外來鍵模型欄位使用名稱 manager,而不是實際在 departments 表中使用的 manager_id。實際上,在模型中使用的 manager 欄位引用相應的 employees 物件,而非此物件的 employee_id 欄位。當外來鍵欄位名稱要引用基礎表中的相應列時,Django 會隱式地將 _id 追加到此名稱中。然而,在某些情況下,表中外來鍵欄位的名稱結尾可能不包含 _id。如果是這種情況,您可以使用外來鍵模型欄位的 db_column 引數顯式指定表列名稱。雖然在此特定示例中無需如此,但您可以使用以下語法在 departments 表中顯式指定外來鍵列的名稱:

manager = models.ForeignKey(employees,db_column = ‘manager_id',null = True) 

除了上述通過 ForeignKey 定義的多對一關係之外,Django 還支援一對一和多對多關係,您可以在模型中分別通過 OneToOneField 和 ManyToManyField 欄位來定義。

以上這篇django連線oracle時setting 配置方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。