Django下mysql資料庫的相關操作(建立資料表、以及增刪查改)
如有疑惑或錯誤之處可評論或郵箱聯絡博主:[email protected]
本文主要記錄了在django下使用mysql資料庫時的相關操作,包括建立資料庫、資料表、以及增刪查改。
博主開發環境:Ubuntu16.04,python2.7,django1.11,mysql5.7
- 資料庫(database)建立
- 資料表(table)建立
- 資料庫的增刪查改四個基本操作
本文采用的資料模型
假設我們以某校學生資訊例,針對其資料儲存建立一個簡單的資料模型:
學生資訊的儲存進行分學院儲存,例如計算機學院,電子工程學院等等。該部分我們對應College模型,有欄位學院名name, 描述description(學院資訊的相關介紹), 管理人員manager。
在每個學院中細分為各個專業。對應模型Major,有欄位專業名name, 外來鍵College(College與Major為一對多關係)。
在每個班級中,儲存每個學生的個人資訊。對應Student模型,有欄位學生姓名name, 學號student_id, 外來鍵Major(Major與Student為一對多關係)。
1. 資料庫student_info的建立
在電腦上安裝完mysql資料庫的前提下,我們使用sql語句建立student_info資料庫
CREATE DATABASE student_info
2. 資料表的建立
自定義table名字方法:
為節省你的時間,Django 會根據模型類的名稱和包含它的應用的名稱自動指定資料庫表名稱。一個模型的資料庫表名稱,由這個模型的“應用標籤”(在manage.py startapp中使用的名稱)和模型類名稱之間加上下劃線組成。
舉個例子, bookstore應用(使用 manage.py startapp bookstore 建立),裡面有個名為 Book的模型,那資料表的名稱就是 bookstore_book 。
我們也可以使用 Meta類中的 db_table 引數來重寫資料表的名稱。
在 MySQL中使用小寫字母為表命名
當你通過db_table覆寫表名稱時,強烈推薦使用小寫字母給表命名,特別是如果你用了MySQL作為後端。詳見MySQL注意事項 。
在這裡我們展示自己為資料表命名的程式碼塊:
from __future__ import unicode_literals
from django.db import models
class Test(models.Model):
name = models.CharField(max_length=20, primary_key=True )
#primary_key=True表示個自定義主鍵欄位,只要在某個欄位上制定primary_key=True
#如果 Django 看到你顯式地設定了 Field.primary_key,就不會自動新增 id 列。
#max_length表示允許輸入的最大字元個數
class Meta:
db_table = "self_table_name"
相關說明:
每個欄位有一些特有的引數。例如,CharField(和它的派生類)需要max_length 引數來指定VARCHAR 資料庫欄位的大小。
還有一些適用於所有欄位的通用引數。 這些引數在參考中有詳細定義,這裡我們只簡單介紹一些最常用的:
null
如果為True,Django 將會把資料庫中空值儲存為NULL。預設值是 False.
blank
如果為True,該欄位允許為空值,預設為False。
要注意,這與 null 不同。null純粹是資料庫範疇,指資料庫中欄位內容是否允許為空,而 blank 是表單資料輸入驗證範疇的。如果一個欄位的blank=True,表單的驗證將允許輸入一個空值。如果欄位的blank=False,該欄位就是必填的。
針對本文所採用的資料模型建立三個資料表:
程式碼塊如下:
from __future__ import unicode_literals
from django.db import models
from django.contrib.auth.models import User
class College(models.Model):
name = models.CharField(max_length=30)
description = models.CharField(max_length=100)
manager = models.ForeignKey(User, blank=True, null=True)
def __str__(self):
return self.name
class Major(models.Model):
name = models.CharField(max_length=30)
colleage= models.ForeignKey(College, on_delete=models.CASCADE, related_name='majors')
def __str__(self):
return self.name
class Student(models.Model):
name = models.CharField(max_length=30)
student_id = models.IntegerField()
major = models.ForeignKey(Major, on_delete=models.CASCADE)
def __str__(self):
return self.name
相關說明:
- 外來鍵ForeignKey()
在模型中定義外來鍵時,同步資料庫後,django預設在外來鍵欄位名後加上”_id”作為資料庫表的列名。
ForeignKey()相關引數如下:
1.1 - - - - on_delete:
當刪除 “一” 模型物件時,django會根據該引數的值對與該物件相關聯的其他物件(也就是 ‘多’)進行操作。
預設為models.CASCADE 級聯刪除。當刪除’一’時,‘多’會被刪除。modles.PROTECT : 當刪除一個具有外來鍵關係的物件時,會引發一個異常,阻止刪除該物件
models.SET_NULL: 設定刪除物件所關聯的外來鍵欄位為null。但欄位的null屬性必需為True
models.SET_DEFAULT : 設定刪除物件所關聯的外來鍵欄位為預設的值。
models.SET(value) :設定刪除物件所關聯的物件的外來鍵欄位為value,value也可以是一個可呼叫函式。
1.2 - - - - related_name
反向查詢: 如我們在Major模型的外來鍵major欄位中設定realted_name=’majors’,可以在關係的另一端,即College端反向查詢到Major
注意:每一次修改模型後,我們都需要確保執行manage.py makemigrations 給應用生成遷移指令碼,並接著執行manage.py migrate
3. 資料庫的增刪查改四個基本操作
增加
from django.http import HttpResponse
from testModel.models import Test
# 新增資料
def dbInsert(request):
test1 = Test(name='insert context')
test1.save()
return HttpResponse("<p>資料新增成功!</p>")
刪除
from django.http import HttpResponse
from testModel.models import Test
# 刪除資料
def dbDelete(request):
# 刪除id=1的資料
test1 = Test.objects.get(id=1)
test1.delete()
# 另外一種方式
# Test.objects.filter(id=1).delete()
# 刪除所有資料
# Test.objects.all().delete()
return HttpResponse("<p>刪除成功</p>")
查詢
from django.http import HttpResponse
from testModel.models import Test
#獲取資料
def dbGet(request):
# 通過objects這個模型管理器的all()獲得所有資料行,相當於SQL中的SELECT * FROM
list = Test.objects.all()
# filter相當於SQL中的WHERE,可設定條件過濾結果
response2 = Test.objects.filter(id=1)
# 獲取單個物件
response3 = Test.objects.get(id=1)
# 限制返回的資料 相當於 SQL 中的 OFFSET 0 LIMIT 2;
Test.objects.order_by('name')[0:2]
# 資料排序
Test.objects.order_by("id")
# 上面的方法可以連鎖使用
Test.objects.filter(name="name context").order_by("id")
# 輸出所有資料
for var in list:
response1 += var.name + " "
response = response1
return HttpResponse("<p>" + response + "</p>")
修改
from django.http import HttpResponse
from testModel.models import Test
# 更改資料
def dbUpdate(request):
# 修改其中一個id=1的name欄位,再save,相當於SQL中的UPDATE
test1 = Test.objects.get(id=2)
test1.name = 'name_update'
test1.save()
# 另外一種方式
# Test.objects.filter(id=1).update(name='name_update')
# 修改所有的列
# Test.objects.all().update(name='name_update')
return HttpResponse("<p>修改成功</p>")
相關推薦
Django下mysql資料庫的相關操作(建立資料表、以及增刪查改)
如有疑惑或錯誤之處可評論或郵箱聯絡博主:[email protected] 本文主要記錄了在django下使用mysql資料庫時的相關操作,包括建立資料庫、資料表、以及增刪查改。 博主開發環境:Ubuntu16.04,python2.7,d
C# 用Linq的方式實現對Xml檔案的基本操作(建立xml檔案、增刪改查xml檔案節點資訊)
1 private static void GetXmlNodeInforOld( string xmlPath) 2 { 3 try 4 { 5
Python3----對遠端windows server 2003伺服器的mysql資料庫中指定庫建立資料表
Python3—-對遠端windows server 2003伺服器的mysql資料庫中指定庫建立資料表 1、參考資料庫的資料表的格式 2、Python程式碼: # -*- coding:
Mysql 資料庫基本操作(1)
1、庫的管理 1)庫的基本操作: ①檢視所有庫:show databases; ②建立庫(指定字符集):create database 庫名 character
MYSQL資料庫練習題操作(select)大全
1、建立表 表一:student學生use) 1、create table student( sno varchar(20) primary key not null comment'學號(主碼)', sname varchar(20) not null comment'學生姓名',
mysql資料庫相關操作.md
對資料庫/表的操作 建立資料庫 create database dbname 建立資料表 create table tb_name(); 顯示資料庫/資料表 show databas
MySQL完整性相關操作(練習題)
1. 新增表Student的主碼為Sno,表Course的主碼為Cno,表SC的主碼為(Sno,Cno); 2. 新增表Course的外碼為Cpno,參照Course表的Cno; 3. 新增表SC的外碼為Sno和Cno,分別參照Student的Sno和Course的Cno
MySQL資料庫基本操作(DDL)
1.mysql -hlocalhost -uroot -p123 登陸 2.show databases; 檢視資料庫資訊 3.use XXX; 使用XXX資料庫 4.show tables; 檢視資料表 5.如何通過命令更改使用者資訊 use mysql
mysql資料庫基本操作(三)
資料表操作 基礎操作 1.建立表(類似於一個excel表) create table tab_name( field1 type[完整性約束條件], field2 type, ... field
mysql資料庫基本操作(四)
表紀錄操作 同樣,表紀錄也有增刪改查的操作,但是一般我們大概70%的操作都是在查資料,所以查的操作需要單獨說清楚,先簡單看看增刪改。 表紀錄的增、刪、改 1.增加一條紀錄的方式: insert [into
mysql資料庫基本操作(五)
表紀錄之查(單表查詢)2 上一篇講了4類查詢的方式,現在接著上一篇繼續看還有哪些方式。 group by 分組查詢 顧名思義,分組查詢要分組,因為mysql5.7之後預設不支援group by語句,需要改配置
mysql資料庫基本操作(六)
外來鍵約束 建立外來鍵 前面講的表單查詢都是一張表,但專案中表與表之間是有關聯的,比如我們建立的學生表,他們可能在不同班級,不同班級有不同的班主任,他們之間的關係大概是這樣的:每一個班主任會對應多個學生 , 而每個學生只能對應一個班主任。所以
進入MySQL資料庫的大門(學習筆記,有你就夠了)
一、初識資料庫 1、什麼是資料庫 資料庫叫database ,簡稱DB,是長期存放在計算機內,有組織、可共享的大量資料的集合;資料庫就是存放資料的倉庫,專業的資料庫系統具有較小的資料冗餘度,較高的資料安全性,易擴充套件性。 資料庫設計原則: mysql主要優勢:一個應用對
Java操作MongoDB資料庫CRUD(增刪查改)
Java操作MongoDB資料庫CRUD(增刪查改) 藉助mongo-java-driver包,對MongoDB資料庫的集合(DataTable)及文件(BSON物件資料)進行增刪查改操作。本文的核心在於查詢操作,善用mongo-java-driver包下的Iterable迭代器、fin
C語言操作mysql範例(增刪查改)
C程式碼的API是隨MySQL一起釋出的. 它包含在mysqlclient庫中, 可以使C程式來訪問資料庫. MySQL原始碼包中的許多客戶端都是用C寫的. 如果你正在找使用這些C API的例子, 可以看看客戶端的寫法.你可以在MySQL原始碼包的clie
go語言操作mysql範例(增刪查改)
go官方僅提供了database package,database package下有兩個包sql,sql/driver。這兩個包用來定義操作資料庫的介面,這就保證了無論使用哪種資料庫,他們的操作方式都是相同的。 但go官方並沒有提供連線資料庫的drive
NPOI對Excel的操作(Sheet轉DataTable、List<T>)
lln int32 rtt ole num r+ pro tab ces 1 using System.Collections.Generic; 2 using NPOI.HSSF.UserModel; 3 using NPOI.SS.UserModel; 4
Python學習筆記_05:使用Flask+MySQL實現用戶登陸註冊以及增刪查改操作
英文博客 註冊頁面 con 實現 sof 來源 doc 學習過程 microsoft 前言:本文代碼參考自兩篇英文博客,具體來源點擊文末代碼鏈接中文檔說明。 運行效果: 首頁: 註冊頁面: 登陸界面: 管理員登陸後界面: 添加、刪除、修改和查詢員工所
MySQL學習筆記1(增刪查改)
nbsp 之間 values 自動 mon name mes 函數 mar 創建表: /* 創建數據庫 create database 數據庫名; */ CREATE DATABASE mybase; /* 使用數據庫 use 數據庫名 */ US
android-一個檔案搞定SQLite資料庫的建立與更新以及增刪查改
一、SQLite簡介 1、簡介 Android嵌入式關係型資料庫——SQLite。SQLite 是一款輕量級的關係型資料庫,它運算速度快, 佔用資源很少,通常只需要幾百 K 的記憶體就足夠了,因而特別適合在移動裝置上使用。SQLite 支援標準的 SQL 語法,還遵循