Django 模型層選擇數(shù)據(jù)庫(kù)類型、創(chuàng)建一個(gè)表

一腥例、ORM介紹

1.什么是ORM

  • ORM 全拼Object-Relation Mapping.
  • 中文意為 對(duì)象-關(guān)系映射.
  • 在MVC/MVT設(shè)計(jì)模式中的Model模塊中都包括ORM
2.ORM優(yōu)勢(shì)

(1)只需要面向?qū)ο缶幊? 不需要面向數(shù)據(jù)庫(kù)編寫代碼.

  • 對(duì)數(shù)據(jù)庫(kù)的操作都轉(zhuǎn)化成對(duì)類屬性和方法的操作.
  • 不用編寫各種數(shù)據(jù)庫(kù)的sql語(yǔ)句.

(2)實(shí)現(xiàn)了數(shù)據(jù)模型與數(shù)據(jù)庫(kù)的解耦, 屏蔽了不同數(shù)據(jù)庫(kù)操作上的差異.

  • 不在關(guān)注用的是mysql翁巍、oracle...等.
  • 通過(guò)簡(jiǎn)單的配置就可以輕松更換數(shù)據(jù)庫(kù), 而不需要修改代碼.
3.ORM劣勢(shì)
  • 相比較直接使用SQL語(yǔ)句操作數(shù)據(jù)庫(kù),有性能損失.
  • 根據(jù)對(duì)象的操作轉(zhuǎn)換成SQL語(yǔ)句,根據(jù)查詢的結(jié)果轉(zhuǎn)化成對(duì)象, 在映射過(guò)程中有性能損失.
4.ORM和數(shù)據(jù)庫(kù)關(guān)系:
  • 在Django中model是你數(shù)據(jù)的單一公你、明確的信息來(lái)源。它包含了你存儲(chǔ)的數(shù)據(jù)的重要字段和行為驯嘱。通常镶苞,一個(gè)模型(model)映射到一個(gè)數(shù)據(jù)庫(kù)表.

基本情況:

  • 每個(gè)模型都是一個(gè)Python類,它必須繼承models.Model類
    django中遵循 Code Frist 的原則鞠评,即:先創(chuàng)建類茂蚓,根據(jù)代碼中定義的類來(lái)自動(dòng)生成數(shù)據(jù)庫(kù)表。
    模型的每個(gè)屬性都代表一個(gè)數(shù)據(jù)庫(kù)字段剃幌。
    綜上所述聋涨,Django為您提供了一個(gè)自動(dòng)生成的數(shù)據(jù)庫(kù)訪問(wèn)API。
對(duì)象-關(guān)系映射

二负乡、創(chuàng)建一個(gè)簡(jiǎn)單的表

1 選擇數(shù)據(jù)庫(kù)類型

  • Django默認(rèn)自帶sqllite的數(shù)據(jù)庫(kù)驅(qū)動(dòng),默認(rèn)使用sqllite的數(shù)據(jù)庫(kù)牍白,可在project文件下的settings.py中修改配置

A)sqllte配置

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

B)mysql配置

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'HttpRunner',  # 新建數(shù)據(jù)庫(kù)名,創(chuàng)建的表都在這下面
            'USER': 'root',  # 數(shù)據(jù)庫(kù)登錄名
            'PASSWORD': 'Hst888888',  # 數(shù)據(jù)庫(kù)登錄密碼
            'HOST': '192.168.91.45',  # 數(shù)據(jù)庫(kù)所在服務(wù)器ip地址
            'PORT': '3306',  # 監(jiān)聽(tīng)端口 默認(rèn)3306即可
        }
    }

C)注意事項(xiàng)
django默認(rèn)導(dǎo)入的驅(qū)動(dòng)是MySQLdb模塊【適用于python2】
python3需要的驅(qū)動(dòng)是pymysql,我們需要在項(xiàng)目名文件下的init_.py(settings.py同級(jí)的文件)中添加如下代碼:

 import pymysql
   pymysql.install_as_Mysqldb()

以上代碼就是告訴python使用pymysql,不要使用MySQLdb

2 注冊(cè)應(yīng)用

 INSTALLED_APPS = [
            'django.contrib.admin',
            'django.contrib.auth',
            'django.contrib.contenttypes',
            'django.contrib.sessions',
            'django.contrib.messages',
            'django.contrib.staticfiles',
            'app01',#注冊(cè)APP敬鬓,上面都是默認(rèn)值
        ]

3 創(chuàng)建類

在app01/models.py 中寫下以下代碼:

from django.db import models

#在數(shù)據(jù)庫(kù)中創(chuàng)建表名為:app01_userinfo
#Django會(huì)自動(dòng)將應(yīng)用名稱添加在表前面
class UserInfo(models.Model):#創(chuàng)建的類必須繼承models.Model
    #當(dāng)model中如果沒(méi)有自增列淹朋,則自動(dòng)會(huì)創(chuàng)建一個(gè)列名為id的主鍵
    username=models.CharField(max_length=32)
    password=models.CharField(max_length=32)

4 生成數(shù)據(jù)表

完成以上操作笙各,接下來(lái)就是根據(jù)models中的類在數(shù)據(jù)庫(kù)中生成對(duì)應(yīng)的表

命令行窗口切換到項(xiàng)目根目錄執(zhí)行以下操作:

    python manage.py makemigrations  #在app01/migrations下會(huì)生成數(shù)據(jù)遷移腳本
    python manage.py migrate  #應(yīng)用到db生成數(shù)據(jù)表

到這一步一個(gè)簡(jiǎn)單的數(shù)據(jù)庫(kù)就創(chuàng)建完成了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末钉答,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子杈抢,更是在濱河造成了極大的恐慌数尿,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件惶楼,死亡現(xiàn)場(chǎng)離奇詭異右蹦,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)歼捐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門何陆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人豹储,你說(shuō)我怎么就攤上這事贷盲。” “怎么了剥扣?”我有些...
    開(kāi)封第一講書人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵巩剖,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我钠怯,道長(zhǎng)佳魔,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任晦炊,我火速辦了婚禮鞠鲜,結(jié)果婚禮上宁脊,老公的妹妹穿的比我還像新娘。我一直安慰自己镊尺,他們只是感情好朦佩,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著庐氮,像睡著了一般语稠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上弄砍,一...
    開(kāi)封第一講書人閱讀 51,688評(píng)論 1 305
  • 那天仙畦,我揣著相機(jī)與錄音,去河邊找鬼音婶。 笑死慨畸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的衣式。 我是一名探鬼主播寸士,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼碴卧!你這毒婦竟也來(lái)了弱卡?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤住册,失蹤者是張志新(化名)和其女友劉穎婶博,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體荧飞,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡凡人,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了叹阔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挠轴。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖耳幢,靈堂內(nèi)的尸體忽然破棺而出岸晦,到底是詐尸還是另有隱情,我是刑警寧澤帅掘,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布委煤,位于F島的核電站,受9級(jí)特大地震影響修档,放射性物質(zhì)發(fā)生泄漏碧绞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一吱窝、第九天 我趴在偏房一處隱蔽的房頂上張望讥邻。 院中可真熱鬧迫靖,春花似錦、人聲如沸兴使。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)发魄。三九已至盹牧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間励幼,已是汗流浹背汰寓。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留苹粟,地道東北人有滑。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像嵌削,于是被迫代替她去往敵國(guó)和親毛好。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355