一步一步的django學習---004

Django模型(數據處理)python

Django對各類數據庫提供了很好的支持,包括:Mysql、Oracle;mysql

Django爲這些數據庫提供了統一的API。下面開始用Django會會咱們的數據庫。sql

1、數據庫的基本鏈接配置:數據庫

安裝數據庫驅動:django

1. windows在cmd中輸入:pip install mysqlclient(一般都不會成功,若是你運氣好,成功了,那你能夠買彩票了,可是提出這種方法,固然是一種最經常使用的方法,可能因爲計算機結構的改變,這種方式到我如今變得不適用了)windows

   下面是解決方法:session

  錯誤類型:cannot open include file:'mysql.h' No such file or directory(反正一大堆,根本緣由是這個)app

  解決方案:使用whl安裝函數

             (1)安裝 wheel :在cmd中輸入:pip install wheel測試

             (2)找到whl 文件:網址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#

                                              文件:mysqlclient-1.3.13-cp36-cp36m-win_amd64.whl(能夠選擇最新版)

             (3)安裝文件:在cmd中找到 mysqlclient-1.3.13-cp36-cp36m-win_amd64.whl所在位置

                                         執行:pip install wheel mysqlclient-1.3.13-cp36-cp36m-win_amd64.whl

通過上面的解決方案,咱們能夠順利的安裝mysqlclient了。接下來,要在咱們的Django項目裏進行數據庫的配置(簡單的說,就是在Django裏輸入登陸數據庫的條件,並進行預設置,Django會把這些信息提交到mysqlclient中,那樣,咱們的項目便擁有了操做數據庫的權限了。)

 

數據庫配置:

找到Django項目中的settings.py文件中的DATABASE部分,而後按照下面的信息進行修改。

注意:若是你在settings.py文件中加入了中文註釋,請務必在文件頭部加入:# -*- coding:UTF-8 -*-;

  

 1 DATABASE = {  2         'default' : {  3                'ENGINE' : 'django.db.backends.mysql' ,  4                'NAME' : 'test' ,  #咱們的數據庫名
 5                'USER'  : 'root' , #咱們登陸Mysql時的帳戶名
 6                'PASSWORD' : 'rootroot' , #咱們登陸Mysql時的帳戶密碼
 7                'HOST' : 'localhost' ,  #咱們數據庫的路徑名
 8                'PORT' : '3306'  , #咱們數據庫的端口,一般Mysql默認的是3306
 9  } 10 }

數據庫配置完成以後,咱們須要在Django中設置一個模型層來接收相應的數據。

 

定義模型和配置模型:

 1.建立APP:Django規定,若是要使用模型,必需要建立一個app.建立方法以下:

  在cmd中,將位置定位到項目的根目錄,而且接下來輸入如下代碼:

  

1 django-admin startapp TestModel

這裏的django-admin是在python的文件路徑中,在django的安裝時就已經存在了。所以,別擔憂咱們所在的路徑下沒有django-admin.

2.修改TestModel下的models.py文件,修改代碼以下:

#model.py # -*- coding:UTF-8-*-
from django.db import models class Test(models.Model):  #這裏·的類名等同於咱們數據庫中的表名,而且繼承了django的models.Model類。雖然不知道被繼承的類是什麼樣子,可是觀察數據庫,咱們會發現,數據庫中多了一個Test表,包含咱們下面所寫的字段。
        name = models.CharField(max_length=20)# name 是字段,models.CharFied 是字段的類型,max_length對應了字段的最大長度,和mysql定義數據表字段時大同小異。

這一步是將django模型和數據庫的表進行了一一對應。下面咱們該幹嗎呢?咱們建立好了咱們的模型,可是對於Django來講,他並不知道,下面。咱們要讓django知道咱們所建立的模型,而且經過預先在settings.py留下的DATABASE信息,來實現django和數據庫的真正鏈接。下面就是咱們要告訴django咱們把模型建好了。

3.配置模型信息

 找到settings.py中的INSTALLED_APPS添加咱們所建立的模型

#settings.py
INSTALLED_APPS = { 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'TestModel',     #添加此項

是的通過以上步驟,咱們將數據庫的模型基本配置完畢,而且基本完成和數據庫的鏈接條件。可是,設置好歸設置好,沒有進行刷新仍是處於沒用的狀態,要將Django的配置進行刷新,而且賦予對應的權限,根據模型,在數據庫中建立表;

賦予權限,在數據庫中建立表結構:

#cmd中,將文件位置定位到manage.py所在的文件夾,輸入如下命令
Python manage.py migrate  #對權限進行喚醒
python manage.py makemigrations TestModel #django找到咱們對應的模型
python manage.py migrate TestModel #在數據庫中建立表結構

通過上面步驟,咱們會發現,數據庫中出現了咱們通過模型建立的表。

數據庫中咱們所建立表的命名格式:

模型名_模型下面的設置的表名。

好了,通過以上步驟,咱們正式和數據庫取得了正式的鏈接。

 

2、數據庫的操做

前期準備:   

    1.創建測試文件testdb.py,文件路徑:和urls.py在同一個路徑

    2.修改urls.py增長:

       

1 from django.conf.urls import *
2 from . import view,testdb 3 
4 urlpatterns = [ 5       url(r'^hello$',view.hello), 6       url(r'^testdb$,testdb.testdb), #增長行
7 ]

正式操做

     1.添加數據(增)

     添加數據須要先建立對象,而後再執行sava函數,至關於SQL中的IINSERT:testdb.py做爲測試文件

1 # -*- coding: utf-8 -*-
2 from django.http import HttpResponse 3 from TestModel.models import Test 4 
5 #數據庫操做
6 def testdb(request): 7      test1=Test(name='cremiy') 8  test1.save() 9      return HttpResponse("<p>數據添加成功!</p>")

    2.獲取數據(查)

    Django提供了多種方式來獲取數據庫的內容,咱們能夠在文件testdb.py中進行測試

    

 1 # -*- coding:utf-8 -*-
 2 #testdb.py  3 from django.http import HttpResponse  4 from TestModel.models import Test  5 
 6 #數據庫操做  7 def testdb(request):  8 #初始化  9      response = ""
10      response1 = ""
11 
12 #經過objects這個模型管理器的all()得到全部數據行,至關於SQL中的 SELECT* FROM 13     list = Test.objects.all() 14 
15 #filter至關於SQL中的WHERE,可設置條件過濾結果 16     response2 = Test.objects.filter(id=1) 17     
18 #獲取單個對象 19     response3 = Test.objects.get(id=1) 20 
21 #限制返回的數據條數,至關於sql中的 offset 0 limit 2,取得排好序後的前三條數據。 22     Test.objects.order_by('name')[0:2] 23 
24 #根據字段排序 25     Test.objects.order_by('字段名') 26 
27 #獲取數據時篩選的方法組合使用 28     Test.objects.filter(name='cremiy').order_by("id") 29 
30 #輸出獲取的全部數據 31     for var in list: 32          response1 += var.name + " "
33     response = response1 34     return HttpResponse("<p>" + response + "</p>"

   3. 更新數據(改)

      修改數據一般有save()或 update():

 1 #testdb.py  2 # -*- coding: utf-8 -*-
 3 from django.http import HttpResponse  4 
 5 from TestModel.models import Test  6 
 7 #數據庫操做  8 def testdb(request):  9 #修改其中一個id=1的name字段,再save,至關於SQL中的UPDATE 10        test1 = Test.objects.get(id=1) 11        test1.name = 'google'
12  test1.save() 13 
14 #採用組合操做的方式update 15       Test.objects.filter(id=1).update(name='google') 16 
17 #修改全部的列 18        Test.objects.all().update(name='google') 19 
20        return HttpResponse("<p>修改爲功</p>")

   4.刪除數據(刪)

 1 #testdb.py
 2 
 3 # -*- coding:utf-8 -*-
 4 
 5 from django.http import HttpResponse  6 
 7 from TestModel.models import Test  8 
 9 #數據庫操做
10 def testdb(request): 11       test1 = Test.objects.get(id=1) #得到對應元組的控制權
12  test1.delete() 13    
14 #組合方式操做
15       Test.objects.filter(id=1).delete() 16 
17 #刪除數據庫的全部數據
18  Test.objects.all().delete() 19        return HttpResponse("<p>刪除成功</p>

 

   以上就是ajango和數據庫打交道的模型層的一些主要操做。

相關文章
相關標籤/搜索