您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關如何在django中連接oracle,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
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就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。