1. 程式人生 > 其它 >django - 模型層及ORM介紹

django - 模型層及ORM介紹

模型層及ORM介紹

  • 模型層 負責根資料庫之間進行通訊

  • Django配置mysql

    • 按照mysqlclient【版本msqlclient 1.3.13以上】
    • 安裝前確認系統中是否安裝了python3-dev和default-libmysqlclient-dev
      • sudo apt list --installed | grep -E 'libmysqlclient-dev | python3-dev'
      • 若沒安裝則執行sudo apt-get install python3-dev default -libmyqlclient-dev
      • sudo pip3 install mysqlclient
  • 建立資料庫

    • 進入MySQL資料庫執行 create database 資料庫名default charset utf8

      • 通常資料庫名稱和專案名稱保持一致
    • settings.py中進行資料庫的配置

      • 修改DATABASES配置項的內容

        DATABASES = {
            'default': {
                'ENGINE': 'django.db.backends.mysql',# 資料庫引擎
                'NAME':  'yun_note', # 資料庫名稱
                'HOST': '127.0.0.1', #連線資料庫的地址 
                'PORT': '3306', # 連線資料庫的埠
                'USER': 'root', # 連線資料庫的使用者名稱
                'PASSWORD': '123456', # 連線資料庫的密碼
        
            }
        }
        
  • 建立模型類

    • 模型類是python類,它是由django.db.models.Model派生的子類
    • 一個模型類代表資料庫中的一張資料表
    • 模型類中每個類屬性都代資料庫中的一個欄位
    • 模型是資料互動的介面,是表示和操作資料庫的方式和方法
  • ORM 框架內

    • ORM object Relational Mapping 物件對映關係,它是一種程式技術,允許你使用類和物件的方式對資料庫操作,避免通過sql語句來操作資料庫

    • 作用:

      • 建立模型類和表之間的對應關係,通過面向物件的方式來操作資料庫

      • 根據設計的模型類生成資料庫中的資料表

      • 通過簡單的配置就可以進行資料庫型別切換

        from django.db import models
        
        # Create your models here.
        
        class users(models.Model):
            username = models.CharField('使用者名稱', max_length=30,unique=True)
            password = models.CharField('密碼', max_length=32)
            active = models.BooleanField('是否啟用', default=1)
        
            createTime = models.DateTimeField('建立時間',auto_now_add=True)
            upadateTime = models.DateTimeField('更新時間', auto_now=True)
        
            # 格式化返回物件
            def __str__(self):
                return 'username %s '%(self.username)
                
                
           # 資料庫 遷移檔案生成一箇中間檔案
           python manage.py makemigrations
           # 資料庫遷 將每個應用下的migrations目錄的中間檔案同步回資料庫
           python manage.py migrate
           
           生成的資料庫表名預設為`應用名_模型類小寫`
        

ORM 基礎欄位及選項

  • 模型類基礎欄位型別
    • BooleanField()
    • CharField()
      • 必須由max_length引數值
    • DateField()
      • auto_now:每次儲存物件時,自動設定該欄位為當前時間
      • auto_now_add:當第一次被建立時自動設定為當前時間
      • default:設定當前時間
      • ** 三個引數只能多選一 **
    • DateTimeField() 同DatField()
    • FloatField()
    • DecimalField()
    • EmailField()
    • IntegerField()
    • ImageField()
    • TextField()