鍍金池/ 教程/ Python/ 將遺留數(shù)據(jù)庫(kù)整合到Django
點(diǎn)擊劫持保護(hù)
安全問(wèn)題歸檔
Model 類參考
將遺留數(shù)據(jù)庫(kù)整合到Django
關(guān)聯(lián)對(duì)象參考
內(nèi)建基于類的視圖的API
聚合
Django 中的用戶認(rèn)證
django.contrib.humanize
Django管理文檔生成器
分頁(yè)
使用Django輸出CSV
加密簽名
文件儲(chǔ)存API
安全
Django中的測(cè)試
國(guó)際化和本地化
為Django編寫首個(gè)補(bǔ)丁
條件表達(dá)式
日志
模型元選項(xiàng)
部署靜態(tài)文件
執(zhí)行查詢
使用Django認(rèn)證系統(tǒng)
基于類的視圖
中間件
編寫自定義的django-admin命令
Django 的設(shè)置
格式本地化
數(shù)據(jù)庫(kù)訪問(wèn)優(yōu)化
錯(cuò)誤報(bào)告
基于類的內(nèi)建通用視圖
編寫自定義存儲(chǔ)系統(tǒng)
編寫你的第一個(gè) Django 程序 第3部分
編寫數(shù)據(jù)庫(kù)遷移
使用表單
編寫你的第一個(gè) Django 程序 第2部分
編寫你的第一個(gè) Django 程序 第1部分
如何使用會(huì)話
系統(tǒng)檢查框架
新手入門
信號(hào)
編寫視圖
如何使用WSGI 部署
編寫你的第一個(gè)Django應(yīng)用,第6部分
常見(jiàn)的網(wǎng)站應(yīng)用工具
Widgets
內(nèi)建的視圖
模型實(shí)例參考
視圖層
Django中的密碼管理
高級(jí)教程:如何編寫可重用的應(yīng)用
國(guó)際化和本地化
"本地特色"附加功能
TemplateResponse 和 SimpleTemplateResponse
模式編輯器
文件上傳
快速安裝指南
部署 Django
表單 API
表單素材 ( <code>Media</code> 類)
管理文件
其它核心功能
查找 API 參考
表單
Admin
數(shù)據(jù)庫(kù)函數(shù)
自定義查找
使用基于類的視圖處理表單
管理操作
開(kāi)發(fā)過(guò)程
編寫你的第一個(gè)Django應(yīng)用,第5部分
進(jìn)行原始的sql查詢
模型層
多數(shù)據(jù)庫(kù)
編寫你的第一個(gè) Django 程序 第4部分
Django安全
Django 初探
Django異常
重定向應(yīng)用
按需內(nèi)容處理
管理器
視圖裝飾器
驗(yàn)證器
使用Django輸出PDF
File對(duì)象
Django 的快捷函數(shù)
基于類的通用視圖 —— 索引
為模型提供初始數(shù)據(jù)
模板層
URL調(diào)度器
中間件
模型

將遺留數(shù)據(jù)庫(kù)整合到Django

雖然Django最適合用來(lái)開(kāi)發(fā)新的應(yīng)用,但也可以將它整合到遺留的數(shù)據(jù)庫(kù)中。Django包含了很多工具,盡可能自動(dòng)化解決這類問(wèn)題。

這篇文章假設(shè)你了解Django的基礎(chǔ)部分,它們?cè)诮坛讨刑峒啊?/p>

一旦你的Django環(huán)境建立好之后,你可以按照這個(gè)大致的流程,整合你的現(xiàn)有數(shù)據(jù)庫(kù)。

向Django提供你的數(shù)據(jù)庫(kù)參數(shù)

你需要告訴Django你的數(shù)據(jù)庫(kù)連接參數(shù),以及數(shù)據(jù)庫(kù)的名稱。請(qǐng)修改DATABASES設(shè)置,為'默認(rèn)' 連接的以下鍵賦值:

  • NAME
  • ENGINE
  • USER
  • PASSWORD
  • HOST
  • PORT

自動(dòng)生成模型

Django自帶叫做inspectdb的工具,可以按照現(xiàn)有的數(shù)據(jù)庫(kù)創(chuàng)建模型。你可以運(yùn)行以下命令,并查看輸出:

$ python manage.py inspectdb

通過(guò)重定向Unix標(biāo)準(zhǔn)輸出流來(lái)保存文件:

$ python manage.py inspectdb > models.py

這個(gè)特性是一個(gè)快捷方式,并不是一個(gè)確定的模型生成器。詳見(jiàn)inspectdb文檔 。

一旦你創(chuàng)建好了你的模型,把文件命名為models.py,然后把它放到你應(yīng)用的Python包中。然后把應(yīng)用添加到你的INSTALLED_APPS 設(shè)置中。

默認(rèn)情況下,inspectdb創(chuàng)建未被管理的模型。這就是說(shuō),模型的Meta類中的managed = False告訴Django不要管理每個(gè)表的創(chuàng)建、修改和刪除:

class Person(models.Model):
    id = models.IntegerField(primary_key=True)
    first_name = models.CharField(max_length=70)
    class Meta:
       managed = False
       db_table = 'CENSUS_PERSONS'

如果你希望Django管理表的生命周期,你需要把managed選項(xiàng)改為 True(或者簡(jiǎn)單地把它移除,因?yàn)門rue是默認(rèn)值)。

安裝Django核心表

接下來(lái),運(yùn)行migrate命令來(lái)安裝所有所需的額外的數(shù)據(jù)庫(kù)記錄,比如后臺(tái)權(quán)限和內(nèi)容類型:

$ python manage.py migrate

測(cè)試和調(diào)整

上面就是所有基本的步驟了 —— 到目前為止你會(huì)想要調(diào)整Django自動(dòng)生成的模型,直到他們按照你想要的方式工作。嘗試通過(guò)Django數(shù)據(jù)庫(kù)API訪問(wèn)你的數(shù)據(jù),并且嘗試使用Django后臺(tái)頁(yè)面編輯對(duì)象,以及相應(yīng)地編輯模型文件。