最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django框架模型簡(jiǎn)單介紹與使用分析

 更新時(shí)間:2019年07月18日 11:08:10   作者:笑-笑-生  
這篇文章主要介紹了Django框架模型簡(jiǎn)單介紹與使用,結(jié)合實(shí)例形式分析了Django框架中模型的概念、原理、使用技巧與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了Django框架模型簡(jiǎn)單介紹與使用。分享給大家供大家參考,具體如下:

ORM介紹

  • ORM Object relational mapping 對(duì)象關(guān)系映射
  • 把面向?qū)ο笾械念惡蛿?shù)據(jù)庫(kù)表一一對(duì)應(yīng)起來(lái),通過(guò)操作類和對(duì)象,對(duì)數(shù)據(jù)庫(kù)表實(shí)現(xiàn)數(shù)據(jù)的增刪改查等操作,而不需要寫SQL語(yǔ)句(由orm框架生成)
  • Django是實(shí)現(xiàn)了ORM的一個(gè)框架,在django項(xiàng)目與數(shù)據(jù)庫(kù)之間起著橋梁的角色。

使用ORM可以通過(guò)方便的配置,切換使用不同的數(shù)據(jù)庫(kù)

使用django進(jìn)行數(shù)據(jù)庫(kù)開發(fā)的步驟如下:

  1. 在models.py中定義模型類
  2. 生成遷移文件: python manage.py makemigrations
  3. 執(zhí)行遷移生成數(shù)據(jù)庫(kù)表(默認(rèn)使用sqlite3數(shù)據(jù)庫(kù),生成的數(shù)據(jù)庫(kù)名為:db.sqlite3): python manage.py migrate
  4. 通過(guò)模型類和對(duì)象,對(duì)數(shù)據(jù)進(jìn)行增刪改查

模型類設(shè)計(jì)

案例:

部門類(Department):

  • 部門名稱: name

  • 部門成立時(shí)間: create_date

員工類(Employee)

  • 性名: name

  • 年齡: age

  • 性別: sex

  • 工資: salary

  • 備注信息: comment

說(shuō)明:

在應(yīng)用models.py中編寫模型類, 必須繼承與models.Model類。

在模型類中,定義屬性,生成對(duì)應(yīng)的數(shù)據(jù)庫(kù)表字段:

屬性名 = models.字段類型(字段選項(xiàng))

字段類型(初步了解,models包下的類):

  1. CharField--字符串
  2. IntegerField--整形
  3. BooleanField--布爾
  4. DateFiled--日期
  5. DecimalFiled--浮點(diǎn)
  6. ForeignKey--外鍵,建立一對(duì)多關(guān)系

不需要定義主鍵id,會(huì)自動(dòng)生成

模型類生成表

根據(jù)模型類,生成遷移文件

python manage.py makemigrations

執(zhí)行遷移文件生成數(shù)據(jù)庫(kù)表

python manage.py migrate

生成表名的默認(rèn)格式:

應(yīng)用名_模型類名小寫

使用sqliteman查看生成的數(shù)據(jù)庫(kù)表

安裝sqliteman

sudo apt-get install sqliteman

啟動(dòng)sqliteman

sqliteman

啟動(dòng)后,通過(guò)file -> open 打開項(xiàng)目下的db.sqlite3數(shù)據(jù)庫(kù)進(jìn)行查看

通過(guò)ORM操作數(shù)據(jù)庫(kù)

  • Django實(shí)現(xiàn)了orm功能,在django項(xiàng)目中,不需要寫sql語(yǔ)句,通過(guò)模型類和對(duì)象,就可以直接操作數(shù)據(jù)庫(kù)數(shù)據(jù)了。

可以通過(guò)以下命令,進(jìn)入python交互環(huán)境,執(zhí)行操作數(shù)據(jù)庫(kù)的代碼:

python manage.py shell

增刪改

調(diào)用一個(gè)模型類對(duì)象的save方法, 就可以實(shí)現(xiàn)數(shù)據(jù)新增或修改。id值在數(shù)據(jù)庫(kù)表中不存在或者為空,則新增,否則為修改。

模型類對(duì)象.save()  # 新增或修改

調(diào)用一個(gè)模型類對(duì)象的delete方法,就可以實(shí)現(xiàn)數(shù)據(jù)刪除,會(huì)根據(jù)id刪除。

模型類對(duì)象.delete() # 根據(jù)對(duì)象的id進(jìn)行刪除

示例:

from app01.models import Department, Employee
from datetime import date
d = Department()
d.name ='研發(fā)部'
d.create_date = date(2017,1,1)
d.save() # 新增
d.name ='人事部'
d.save() # 修改
d.id = 10
d.save() # 新增
d.name = '研發(fā)部'
d.id = None
d.save() # 新增
d.id = None
d.save() # 新增
d.delete() # 刪除

模型管理器

每個(gè)模型類默認(rèn)都有 objects 類屬性,可以把它叫 模型管理器。它由django自動(dòng)生成,類型為 django.db.models.manager.Manager

>>> Employee.objects
<django.db.models.manager.Manager object at 0x7fcfcdf67550>

objects模型管理器中提供了一些查詢數(shù)據(jù)的方法:

objects管理器中的方法 返回類型 作用
模型類.objects.get() 模型對(duì)象 返回一個(gè)對(duì)象,且只能有一個(gè):
如果查到多條數(shù)據(jù),則報(bào)錯(cuò):MultipleObjectsReturned
如果查詢不到數(shù)據(jù),則報(bào)錯(cuò):DoesNotExist
模型類.objects.filter() QuerySet 返回滿足條件的對(duì)象
模型類.objects.all() QuerySet 返回所有的對(duì)象

關(guān)聯(lián)查詢

部門和員工是一對(duì)多的關(guān)系,怎么根據(jù)部門查員工,或根據(jù)員工查詢部門呢?

用法:

假設(shè)在一對(duì)多關(guān)系中,一對(duì)應(yīng)的類叫做一類,多對(duì)應(yīng)的類叫做多類:

由一類對(duì)象查詢多類對(duì)象:

一類對(duì)象.多類名小寫_set.all()

由多類對(duì)象查詢一類對(duì)象:

多類對(duì)象.關(guān)聯(lián)屬性

示例:

# 查詢部門id為1的所有員工
d = Department.objects.get(id=1)
d.employee_set.all() # 一查多
# 查詢id為1的員工所屬的部門信息
e = Employee.objects.get(id=1)
e.department   # 多查一

希望本文所述對(duì)大家基于Django框架的Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • python益智游戲計(jì)算漢諾塔問(wèn)題示例

    python益智游戲計(jì)算漢諾塔問(wèn)題示例

    漢諾塔(又稱河內(nèi)塔)問(wèn)題是源于印度一個(gè)古老傳說(shuō)的益智玩具。
    2014-03-03
  • Python實(shí)現(xiàn)中英文全文搜索的示例

    Python實(shí)現(xiàn)中英文全文搜索的示例

    這篇文章主要介紹了Python實(shí)現(xiàn)中英文全文搜索的示例,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-12-12
  • Python實(shí)現(xiàn)微信小程序自動(dòng)操作工具

    Python實(shí)現(xiàn)微信小程序自動(dòng)操作工具

    這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)微信小程序自動(dòng)化操作的小工具,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-01-01
  • python使用matplotlib顯示圖像失真的解決方案

    python使用matplotlib顯示圖像失真的解決方案

    這篇文章主要介紹了python使用matplotlib顯示圖像失真的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • 用Python編寫一個(gè)國(guó)際象棋AI程序

    用Python編寫一個(gè)國(guó)際象棋AI程序

    在這篇文章中我會(huì)介紹這個(gè)AI如何工作,每一個(gè)部分做什么,它為什么能那樣工作起來(lái)。你可以直接通讀本文,或者去下載代碼,邊讀邊看代碼。雖然去看看其他文件中有什么AI依賴的類也可能有幫助,但是AI部分全都在AI.py文件中
    2014-11-11
  • Python 畫出來(lái)六維圖

    Python 畫出來(lái)六維圖

    這篇文章主要介紹了Python 畫出來(lái)六維圖,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python 多維List創(chuàng)建的問(wèn)題小結(jié)

    Python 多維List創(chuàng)建的問(wèn)題小結(jié)

    這篇文章主要介紹了Python 多維List創(chuàng)建的問(wèn)題小結(jié),詳細(xì)的介紹了遇到的一個(gè)小問(wèn)題的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • python3獲取文件中url內(nèi)容并下載代碼實(shí)例

    python3獲取文件中url內(nèi)容并下載代碼實(shí)例

    這篇文章主要介紹了python3獲取文件中url內(nèi)容并下載代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Python爬蟲PyQuery庫(kù)基本用法入門教程

    Python爬蟲PyQuery庫(kù)基本用法入門教程

    這篇文章主要介紹了Python爬蟲PyQuery庫(kù)基本用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了pyQuery庫(kù)字符串初始化、打開網(wǎng)頁(yè)、css屬性、標(biāo)簽內(nèi)容等獲取、DOM基本操作等相關(guān)技巧與使用注意事項(xiàng),需要的朋友可以參考下
    2018-08-08
  • python中pip的使用和修改下載源的方法

    python中pip的使用和修改下載源的方法

    這篇文章主要介紹了python中pip的使用和修改下載源的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07

最新評(píng)論

南开区| 阳春市| 航空| 大化| 海伦市| 迁安市| 津市市| 达日县| 南郑县| 华蓥市| 玉溪市| 永寿县| 仪征市| 拉萨市| 永济市| 文成县| 阿鲁科尔沁旗| 布尔津县| 灵山县| 河曲县| 右玉县| 车致| 昌图县| 周宁县| 卢龙县| 故城县| 韩城市| 九江市| 桐城市| 沈丘县| 新和县| 喜德县| 来安县| 敦煌市| 正宁县| 天台县| 太谷县| 晋江市| 轮台县| 运城市| 永春县|