最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django學習筆記之ORM基礎(chǔ)教程

 更新時間:2018年03月27日 11:42:03   作者:人生不如戲  
ORM,即Object-Relational Mapping(對象關(guān)系映射),它的作用是在關(guān)系型數(shù)據(jù)庫和業(yè)務(wù)實體對象之間作一個映射,下面這篇文章主要給大家介紹了關(guān)于Django學習筆記之ORM基礎(chǔ)教程的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。

ORM簡介

ORM概念

對象關(guān)系映射(Object Relational Mapping,簡稱ORM)模式是一種為了解決面向?qū)ο笈c關(guān)系數(shù)據(jù)庫存在的互不匹配的現(xiàn)象的技術(shù)。

簡單的說,ORM是通過使用描述對象和數(shù)據(jù)庫之間映射的元數(shù)據(jù),將程序中的對象自動持久化到關(guān)系數(shù)據(jù)庫中。

ORM在業(yè)務(wù)邏輯層和數(shù)據(jù)庫層之間充當了橋梁的作用。

ORM由來

讓我們從O/R開始。字母O起源于"對象"(Object),而R則來自于"關(guān)系"(Relational)。

幾乎所有的軟件開發(fā)過程中都會涉及到對象和關(guān)系數(shù)據(jù)庫。在用戶層面和業(yè)務(wù)邏輯層面,我們是面向?qū)ο蟮?。當對象的信息發(fā)生變化的時候,我們就需要把對象的信息保存在關(guān)系數(shù)據(jù)庫中。

按照之前的方式來進行開發(fā)就會出現(xiàn)程序員會在自己的業(yè)務(wù)邏輯代碼中夾雜很多SQL語句用來增加、讀取、修改、刪除相關(guān)數(shù)據(jù),而這些代碼通常都是重復的。

ORM的優(yōu)勢

ORM解決的主要問題是對象和關(guān)系的映射。它通常把一個類和一個表一一對應,類的每個實例對應表中的一條記錄,類的每個屬性對應表中的每個字段。

ORM提供了對數(shù)據(jù)庫的映射,不用直接編寫SQL代碼,只需像操作對象一樣從數(shù)據(jù)庫操作數(shù)據(jù)。

讓軟件開發(fā)人員專注于業(yè)務(wù)邏輯的處理,提高了開發(fā)效率。

ORM的劣勢

ORM的缺點是會在一定程度上犧牲程序的執(zhí)行效率。

ORM用多了SQL語句就不會寫了,關(guān)系數(shù)據(jù)庫相關(guān)技能退化...

ORM總結(jié)

ORM只是一種工具,工具確實能解決一些重復,簡單的勞動。這是不可否認的。

但我們不能指望某個工具能一勞永逸地解決所有問題,一些特殊問題還是需要特殊處理的。

但是在整個軟件開發(fā)過程中需要特殊處理的情況應該都是很少的,否則所謂的工具也就失去了它存在的意義。

Django連接MySQL數(shù)據(jù)庫

1. 在Django項目的settings.py文件中,配置數(shù)據(jù)庫連接信息:

DATABASES = {
 "default": {
 "ENGINE": "django.db.backends.mysql",
 "NAME": "你的數(shù)據(jù)庫名稱", # 需要自己手動創(chuàng)建數(shù)據(jù)庫
 "USER": "數(shù)據(jù)庫用戶名",
 "PASSWORD": "數(shù)據(jù)庫密碼",
 "HOST": "數(shù)據(jù)庫IP",
 "POST": 3306
 }
}

2. 在Django項目(注意,項目里的,不是app)的__init__.py文件中寫如下代碼,告訴Django使用pymysql模塊連接MySQL數(shù)據(jù)庫:

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)

然后執(zhí)行下面命令:

python manage.py makemigrations
python manage.py migrate

first_name 和 last_name 是模型的字段。每個字段被指定為一個類屬性,每個屬性映射到一個數(shù)據(jù)庫列。

上面的 Person 模型將會像這樣創(chuàng)建一個數(shù)據(jù)庫表:

CREATE TABLE myapp_person (
 "id" serial NOT NULL PRIMARY KEY,
 "first_name" varchar(30) NOT NULL,
 "last_name" varchar(30) NOT NULL
);

增加數(shù)據(jù)

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(字段=值) #按照字段查找

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

最新評論

拉萨市| 小金县| 永顺县| 海盐县| 隆尧县| 太湖县| 阿合奇县| 临夏县| 香格里拉县| 隆回县| 城口县| 庄浪县| 阜城县| 博客| 安达市| 潮安县| 许昌市| 中宁县| 海口市| 桐城市| 镶黄旗| 姜堰市| 肃南| 历史| 长岛县| 洪泽县| 綦江县| 金乡县| 木兰县| 福海县| 昌宁县| 清河县| 达拉特旗| 墨脱县| 温州市| 杂多县| 普定县| 民勤县| 龙游县| 左贡县| 乌恰县|