1. 程式人生 > 其它 >Django:ORM簡介與配置

Django:ORM簡介與配置

目錄

一、Django連線資料庫

由於Django自帶的SQLite3功能較少,主要用於專案中的小型測試,在實際專案中都會替換成MySQL

1.使用MySQL資料庫首先安裝驅動程式

pip install PyMySQL
  • Django預設的資料庫配置需要我們更新
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

2.Django配置MySQL

第一步:修改DATABASES配置資訊

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'day51',
        'HOST': '127.0.0.1',
        'PORT': 3306,
        'USER': 'root',
        'PASSWORD': 'root123',
        'CHARSET': 'utf8'        
    }

第二步:

  • django1.X版本需要在專案目錄下或者app目錄下的__init__.py

    編寫程式碼

    讓pymysql以MySQLDB的執行模式和Django的ORM對接執行,讓Django的ORM能以mysqldb的方式來呼叫PyMySQL。

import pymysql
pymysql.install_as_MySQLdb()
  • django2.X及以上都可以直接通過下載mysqlclient模組解決

終端中執行

pip install mysqlclient

3.檢視執行的SQL語句的配置

如果想在建立表的時候檢視執行的SQL語句,可以在settings.py中新增

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
        },
    },
    'loggers': {
        'django.db.backends': {
            'handlers': ['console'],
            'propagate': True,
            'level': 'DEBUG',
        },
    }
}

二、ORM簡介

1.ORM:物件關係對映

ORM的作用簡單來說是Django中自帶的,能夠讓不會SQL語句的python程式設計師,使用python面向物件的語法來操作資料庫的一種方式

Pyhton 對映資料庫中
物件 記錄
物件點屬性 資料獲取欄位對應的值

ORM缺點:

ORM由於高度封裝了SQL語句,所以執行效率較低

  • 我們可以通過以下步驟來使用django的資料庫操作:
  1. 配置資料庫連線資訊
  2. 在models.py中定義模型類
  3. 生成資料庫遷移檔案並執行遷檔案[注意:資料遷移是一個獨立的功能,這個功能在其他web框架未必和ORM一塊的]
  4. 通過模型類物件提供的方法或屬性完成資料表的增刪改查操作

2.ORM基本操作

1.先在models.py中編寫模型類

# ORM  object relationship mapping 模型類
class BoysInfo(models.Model):
    # id int primary key auto_increment
    id = models.AutoField(primary_key=True)  # 欄位名=欄位型別 + 約束條件
    # name varchar(32)
    name = models.CharField(max_length=32)
    # age int
    age = models.IntegerField()

2.執行資料庫遷移相關命令

  • 在終端中,將操作記錄在migrations目錄下,之後就可以操作了
python3 manage.py makemigrations
  • 將資料庫遷移到資料庫中
 python3 manage.py migrate

每次執行相關資料庫的操作,都需要執行這兩條命令同步資料庫

3.ORM基本語句

使用ORM需要在views.py檔案中匯入models

from app01 import models
  • 建立表

    models.類名.objects.create()
    
  • 建立表

    models.類名.objects.filter()
    
  • 建立表

    models.類名.objects.update()
    
  • 建立表

    models.類名.objects.delete()
    

報錯資訊記錄

1.name '_mysql' is not defined

  • 解決方案:在__init__.py中新增
import pymysql

pymysql.install_as_MySQLdb()
  1. 'str' object has no attribute 'decode'
  • 解決方案:點進去連結,將decode改成encode