Django框架之ORM解析和實際應用

2021-10-14 18:17:10 字數 2156 閱讀 5937

orm分為兩種:

1、db first 先建立資料庫表結構,根據表結構生成類,根據類運算元據庫

2、code first 是先寫**,後建立資料庫,根據類建立資料庫表.

主流的orm都是code first。django 的orm也是code first

django連線資料庫mysql:使用mysql資料庫首先需要安裝驅動程式。(pip install pymysql 呼叫時為 import pymysql)

django預設匯入的mysql的驅動程式是mysqldb,然而mysqldb對於py3支援不全,所以這裡使用pymysql。 用於python鏈結mysql資料庫的介面。需要在__init__檔案指定

from pymysql import install_as_mysqldb install_as_mysqldb() 。作用是讓django的orm能以mysqldb的方式來呼叫pymysql。

orm:物件關係對映。在專案與資料庫之間起橋梁作用。

核心思想:用物件導向的方式去運算元據庫的建立表、增加、修改、刪除、查詢等操作。把物件導向中的類和資料庫表一一對應,通過操作類和物件,對資料表實現資料操作,不需要寫sql,由orm框架生成。

django的orm操作原理:django的orm操作本質上會根據對接的資料庫引擎,翻譯成對應的sql語句;所有使用django開發的專案無需關心程式底層使用的是mysql、oracle、sqlite…,如果資料庫遷移,只需要更換django的資料庫引擎即可

django的orm優點缺點:

django有預設自帶的資料庫,當然也可以用其他的資料庫,修改資料庫的方式也很簡單是需要在setting.py修改

databases這裡面的引數就可以了,這裡使用的是預設的sqlite3

2-1 先在models.py裡定義模型類

from django.db import models

class books

(models.model)

:#繼承models.model才能成為模型類

title = modes.charfield(max_length =20)

#設定最大長度

pub_data = models.datefield(

)#日期格式

def __str(self)

:# 定義乙個方法顯示字串

return sef.title.encode(『utf-

8』)#有中文的話,編碼utf-8不會報錯

class hero

(modes.mode)

: name = models.charfield(max_length =30)

content = models.charfield(max_length =

100)

gender = modes.booleanfield(default=

true

)#bool 型別

book = modes.foreignkey(books)

# 外來鍵,表示指定book會對應乙個類books物件

def __str__(self)

: return sef.name.encode(『utf-

8』)

2-2 在專案目錄下生成遷移,類似生成資料庫語句
python manage.py makemigrations	 #生成遷移檔案
生成遷移檔案的命令:根據模型類的屬性來確定資料庫表中的結構。根據模型類生成遷移檔案,會在應用目錄下migrations目錄裡,生成py檔案(相當於sql檔案),放類似於sql語句的東西

python manage.py migrate      #遷移
根據遷移檔案建立資料庫生成表,在booktest下生成db_sqlite3資料庫

參考

python之Django框架的ORM簡介

databases 2.在與django 專案同名的目錄下的 init py 檔案中寫下如下 告訴django 使用pymysql模組連線mysql資料庫 import pymysql pymysql.install as mysqldb 3.資料庫遷移的時候出現乙個警告 warnings mysq...

Django框架之ORM基本實現原理

django的orm django中內嵌了orm框架,不需要直接面向資料庫程式設計,而是定義模型類,通過模型類和物件完成資料表的增刪改查操作。django連線資料庫mysql 使用mysql資料庫首先需要安裝驅動程式。pip install pymysql 呼叫時為 import pymysql d...

Django之ORM中事務和鎖

orm 事務 資料庫事務 簡稱 事務 是資料庫管理系統執行過程中的乙個邏輯單位,由乙個有限的資料庫操作序列構成。並非任意的對資料庫的操作序列都是資料庫事務。資料庫事務擁有以下四個特性,習慣上被稱之為acid特性。1.原子性 atomicity 事務作為乙個整體被執行,包含在其中的對資料庫的操作要麼全...