orm

ORMhtml

 

一 ORM簡介

(1) 詢數據層次圖解:若是操做mysql,ORM是在pymysq之上又進行了一層封裝python

(2) MVC或者MTV框架中包括一個重要的部分,就是ORM,它實現了數據模型與數據庫的解耦,即數據模型的設計不須要 依賴於特定的數據庫,經過簡單的配置就能夠輕鬆更換數據庫,這極大的減輕了開發人員的工做量,不須要面對因數據庫變動而致使的無效勞動mysql

(3)ORM是 '對象—關係—映射'的簡稱。sql

 

ORM能夠作的事情:數據庫

 

複製代碼
1 建立表,修改表,刪除表

2 插入數據

3 修改數據

4 刪除數據

不能幹: 不能建立數據庫


類名 ------->表

對象--------->一條數據

屬性----------> 字段
複製代碼

 

二 使用pymysql步驟:

(1) 建立數據庫(ORM不能建立數據庫)django

(2)在setting 裏配置app

複製代碼
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'lqz',
        'USER': 'root',
        'PASSWORD': '123456',
        'HOST': '127.0.0.1',
        'PORT': 3306,
        'ATOMIC_REQUEST': True,
        'OPTIONS': {
            "init_command": "SET storage_engine=MyISAM",
        }
    }
}


'''
'NAME':要鏈接的數據庫(數據庫名字),鏈接前須要建立好 
'USER':鏈接數據庫的用戶名
'PASSWORD':鏈接數據庫的密碼
'HOST':鏈接主機,默認本機
'PORT':端口 默認3306
'ATOMIC_REQUEST': True,
設置爲True統一個http請求對應的全部sql都放在一個事務中執行(要麼全部都成功,要麼全部都失敗)。
是全局性的配置, 若是要對某個http請求放水(而後自定義事務),能夠用non_atomic_requests修飾器 
'OPTIONS': {
             "init_command": "SET storage_engine=MyISAM",
            }
設置建立表的存儲引擎爲MyISAM,INNODB
'''
複製代碼

(3) 在app的 __init__.py 文件裏寫上:框架

import pymysql
pymysql.install_as_MySQLdb()

'''

(4) 在models裏定義類,類必須繼承models.Modelpost

(5)寫屬性,對應着數據庫的字段this

複製代碼
建立名爲app01的app,在app01下的model.py中建立模型

from django.db import models

class UserInfo(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=32)
    password = models.CharField(max_length=32,null=True)
    # default='' 默認值
    # null= True 自斷能夠爲空
    gender = models.IntegerField()
    birthday = models.DateField()
    def __str__(self):
        return self.name
    

//增長和刪除字段
刪除,直接註釋掉字段,執行數據庫遷移命令便可
新增字段,在類裏直接新增字段,直接執行數據庫遷移命令會提示輸入默認值,此時須要設置
publish = models.CharField(max_length=12,default='人民出版社',null=True)
複製代碼

(6) 執行 python3 manage.py makemigrations (至關於作一個記錄)

(7)執行 python3 manage.py migrate(會把記錄執行到數據庫)

建立出來的表名是: app的名字_類名

 

複製代碼
最後經過以上兩條數據庫遷移命令便可在指定的數據庫中建立表

#注意:
1 數據庫遷移記錄都在 app01下的migrations裏
2 使用showmigrations命令能夠查看沒有執行migrate的文件
3 makemigrations是生成一個文件,migrate是將更改提交到數據量
複製代碼

三 添加表記錄

複製代碼
views視圖層
from django.shortcuts import render,HttpResponse
from app01.models import *

def register(request):
    if request.methods == 'POST':
        name = request.POST.get('name')
        password = request.POST.get('password')
        gender = request.POST.get('gender')
        gender = request.POST.get('birthday')
        #第一種方式
        user = UserInfo(birthday=birthday,name=name,password=password,gender=gender)
        user.save()
        #第二種方式(推薦這種) 建立成功,會返回一個對象
        user = UserInfo.object.create(birthday=birthday,name=name,password=password,gender=gender)
        print(user)
        return HttpResponse('註冊成功')
    

def user_list(request):
    # 把數據表裏用戶全拿出來  
    user_list = UserInfo.object.all() #all():查詢全部結果
    
    print(type(user_list)) #類
    print(user_list[0].name) #表裏面的每條數據至關於一個對象 能夠.訪問對象屬性
    print(user_list[0].password)
    return render(request,'user_list',{'user_list':user_list})
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息