您好,登錄后才能下訂單哦!
ORM簡介
ORM概念
對象關系映射(Object Relational Mapping,簡稱ORM)模式是一種為了解決面向對象與關系數據庫存在的互不匹配的現象的技術。
簡單的說,ORM是通過使用描述對象和數據庫之間映射的元數據,將程序中的對象自動持久化到關系數據庫中。
ORM在業務邏輯層和數據庫層之間充當了橋梁的作用。
ORM由來
讓我們從O/R開始。字母O起源于"對象"(Object),而R則來自于"關系"(Relational)。
幾乎所有的軟件開發過程中都會涉及到對象和關系數據庫。在用戶層面和業務邏輯層面,我們是面向對象的。當對象的信息發生變化的時候,我們就需要把對象的信息保存在關系數據庫中。
按照之前的方式來進行開發就會出現程序員會在自己的業務邏輯代碼中夾雜很多SQL語句用來增加、讀取、修改、刪除相關數據,而這些代碼通常都是重復的。
ORM的優勢
ORM解決的主要問題是對象和關系的映射。它通常把一個類和一個表一一對應,類的每個實例對應表中的一條記錄,類的每個屬性對應表中的每個字段。
ORM提供了對數據庫的映射,不用直接編寫SQL代碼,只需像操作對象一樣從數據庫操作數據。
讓軟件開發人員專注于業務邏輯的處理,提高了開發效率。
ORM的劣勢
ORM的缺點是會在一定程度上犧牲程序的執行效率。
ORM用多了SQL語句就不會寫了,關系數據庫相關技能退化...
ORM總結
ORM只是一種工具,工具確實能解決一些重復,簡單的勞動。這是不可否認的。
但我們不能指望某個工具能一勞永逸地解決所有問題,一些特殊問題還是需要特殊處理的。
但是在整個軟件開發過程中需要特殊處理的情況應該都是很少的,否則所謂的工具也就失去了它存在的意義。
Django連接MySQL數據庫
1. 在Django項目的settings.py文件中,配置數據庫連接信息:
DATABASES = { "default": { "ENGINE": "django.db.backends.mysql", "NAME": "你的數據庫名稱", # 需要自己手動創建數據庫 "USER": "數據庫用戶名", "PASSWORD": "數據庫密碼", "HOST": "數據庫IP", "POST": 3306 } }
2. 在Django項目(注意,項目里的,不是app)的__init__.py文件中寫如下代碼,告訴Django使用pymysql模塊連接MySQL數據庫:
import pymysql pymysql.install_as_MySQLdb()
3.如需在pycharm里視圖操作:
Django中ORM的(簡單)增刪改查
增
增加表
下面這個例子定義了一個 Person 模型,包含 first_name 和 last_name。
from django.db import models class Person(models.Model): first_name = models.CharField(max_length=30) last_name = models.CharField(max_length=30)
然后執行下面命令:
python manage.py makemigrations python manage.py migrate
first_name 和 last_name 是模型的字段。每個字段被指定為一個類屬性,每個屬性映射到一個數據庫列。
上面的 Person 模型將會像這樣創建一個數據庫表:
CREATE TABLE myapp_person ( "id" serial NOT NULL PRIMARY KEY, "first_name" varchar(30) NOT NULL, "last_name" varchar(30) NOT NULL );
增加數據
models.Person.object.create(first_name='fu',last_name='yong')
刪
models.Person.object.get(id=1).delete()
改
obj = models.Person.object.get(id=1) obj.last_name = 'xiaoyong'<br data-filtered="filtered"><br data-filtered="filtered">obj.save()
查
models.Person.object.all() #查找所有記錄,返回一個queryset對象 models.Person.object.get(字段=值) #按照字段查找
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。