一步一步的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和数据库打交道的模型层的一些主要操做。

相关文章
相关标签/搜索