完美主義者的最終框架

Django模型是與數據庫相關的,與數據庫相關的代碼通常寫在 models.py中,Django支持sqlite3,MySQL,PostgreSQL等數據庫,只須要在settings.py中配置便可,不用更改models.py中的代碼,豐富的API極大的方便了使用。python

Model相對於傳統的三層或者mvc框架來講就至關於數據處理層,它主要負責與數據的交互,在使用django框架設計應用系統時,須要注意的是django默認採用的是orm框架中的codefirst模型,也就是說開發人員只須要專一於代碼的編寫,而不須要過多的關注數據庫層面的東西,把開發人員從數據庫中解放出來sql

django會根據Model類生成一個數據庫鏡像文件,而後再使用該鏡像文件生成數據庫,同時該文件將記錄與數據庫同步版本的變化,因此在使用django進行開發時不要手工去修改數據庫,這樣會形成django框架的版本記錄不正確,從而沒法正確的同步數據模型與數據庫的內容。Django中引用了ORM(Objects Relational Mapping)對象關係映射,對不一樣的數據庫都提供了同一調用的API。ORM是一種程序技術,用於實現面向對象編程語言裏不一樣類型系統的數據之間的轉換。能夠簡單理解爲翻譯機。shell

下面經過簡單的代碼來看看model是怎麼建立數據庫的。數據庫

建立工程和APP
建立工程:django

django-admin startproject douban編程

建立應用:mvc

在douban工程項目目錄下輸入:app

python manage.py startapp book(你想創建的app名稱)框架

創建一個叫book的app編程語言

這樣,在你的工程項目douban目錄下會出現一個叫book的目錄

將咱們新建的應用(book)添加到 settings.py 中的 INSTALLED_APPS中,也就是告訴Django有這麼一個應用。

 

建立Model
在book目錄下進入models.py輸入相似下面的代碼:

上面的每一個class至關於一個新的table

django會自動給每一個model配置一個名爲id的primary key

 

同步數據庫
在shell中輸入

python manage.py makemigrations       #創建了模型到表的映射關係

python manage.py migrate                        #生成表

以後你應該能看到諸如:

Creating tables...

Creating tablebooks_publisher

Creating tablebooks_author

Creating tablebooks_book_authors

Creating tablebooks_book

Installingcustom SQL ...

Installingindexes ...

Installed 0object(s) from 0 fixture(s)

這樣的信息

使用Navicat能夠直觀看到生成的表

 

數據庫的增刪改查
(插入一個新的對象) insert:

在python-shell下面操做能夠直接操做

from book.modelsimport Author
Ø  方法1:
p1 =Author(name='zhangsan',age=30,email='zhangsan@126.com')
p1.save()
Ø  方法2:
p1 = Author()
p1. name='zhangsan'
p1.age =30
p1.email='zhangsan@126.com'
p1.save()
Ø  方法3:
Author.objects.create(name='zhangsan',age=30,email='zhangsan@126.com')
Ø  方法4:
Author.objects.get_or_create(name='zhangsan',age=30,email='zhangsan@126.com)
第4種方法是防止重複很好的方法, 可是速度要相對慢些, 返回一個元組, 第一個爲Author對象, 第二個爲True或False,新建時返回的是True, 已經存在時返回False.


(查詢或選擇對象)select:

在python-shell下面操做能夠直接操做

(更新對象)update:

在python-shell下面操做能夠直接操做

(刪除對象)delete:

在python-shell下面操做能夠直接操做


————————————————

睿江雲官網連接:https://www.eflycloud.com/home?from=RJ0036

相關文章
相關標籤/搜索