Django模型封装python操作数据库的代码,让我们可以更加方便的执行SQL语句。每个创建的app下都会有一个叫models.py的文件,在这个文件下创建的模型类映射于数据库的表名,类属性映射于数据库的字段。下面介绍下MySQL在django下的有关配置和操作。

模型配置

  • 配置数据库:先进入数据库,创建一个库名,我创建了一个叫mydb,然后在setting.py文件中进行配置。这里要注意的是,创建的app一定记得也是要配置的。

  • pymysql数据库连接器:用pip安装pymysql包,可用pip list指令查看pip已经安装了的包,确认安装成功。再在init文件中进行配置。

  • 模型类映射到数据库:在app的models.py中写一个模型类,我的app叫music。所写的模型类都要继承于Model这个基类,这样才能使用其封装好的代码。对于字段的类型映射上,在下篇博客上再统一说明。写完模型类后,还要在Linux上将模型类映射到数据库中。先cd到项目目录下,再执行命令python manage.py makemigrations [app_name],来创建映射文件。后面的app名可选,默认会遍历所有的app下的模型类来创建映射文件。最后再执行命令python manage.py migrate [app_name]将映射文件提交到数据库中,同样也可以指定app名。

数据库的增删改查

  • 增(add)

对数据库的操作写在视图函数中,写前要记得将写好的模型类导进来,增的方法有以下四种,前两种实现是先对模型类进行实例化,这种方式最后记得要用save方法将数据进行提交。后面两种不用再写save来提交,get_or_create方法是对于添加的数据存在就不会添加,不存在就添加。

  • 查:查方法直接看的数据是以对象的方式呈现,无法直接看到里面的数据。如下所示:

要想看到里面的数据,得到模型类中重写__str__方法,指定查看到的数据格式。

下面的查找、删除、更改的代码

重写过__str__方法后,效果如下图

数据查找all和filter方法返回的是QuerySet对象,get方法返回的是单个对象,如果用get方法得到的结果会有多个,则get方法会报错。

QuerySet对象是一个可迭代对象,支持切片,但不支持负索引切片。我们可以用list将其强制转化为列表。

  • 改:改的前提是先查找到数据,可以以赋值的方法进行修改,也可以用update方法进行修改。

  • 删:删的前提也是要先查找到数据,再用delete方法删除。

如果要删除表,不要在数据库中执行,可以直接将模型类删除或注释掉,再重复将模型类映射到数据库的两条命令即可。

对于模型类中自增长的id字段,即使不写,django也会自动帮我们添加上。

Django2.0模型基础——(一)的更多相关文章

  1. 《玩转Django2.0》读书笔记-Django建站基础

    <玩转Django2.0>读书笔记-Django建站基础 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.网站的定义及组成 网站(Website)是指在因特网上根据一 ...

  2. Django2.0使用

    创建项目: 通过命令行的方式:首先要进入到安装了django的虚拟环境中.然后执行命令: django-admin startproject [项目的名称] 这样就可以在当前目录下创建一个项目了. 通 ...

  3. Unity3D游戏开发初探—2.初步了解3D模型基础

    一.什么是3D模型? 1.1 3D模型概述 简而言之,3D模型就是三维的.立体的模型,D是英文Dimensions的缩写. 3D模型也可以说是用3Ds MAX建造的立体模型,包括各种建筑.人物.植被. ...

  4. word2vec原理(一) CBOW与Skip-Gram模型基础

    word2vec原理(一) CBOW与Skip-Gram模型基础 word2vec原理(二) 基于Hierarchical Softmax的模型 word2vec原理(三) 基于Negative Sa ...

  5. 【Python3.6+Django2.0+Xadmin2.0系列教程一】环境搭建及项目创建

    由于工作需要,接触了大半年时间的Django+xadmin框架,一直没空对这块对进行相关的梳理.最近在同事的怂恿下,就在这分享下笔者的学习及工作经验吧. 好了,话不多说,下面开始进入正题: 环境需求: ...

  6. 《玩转Django2.0》读书笔记-探究视图

    <玩转Django2.0>读书笔记-探究视图 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 视图(View)是Django的MTV架构模式的V部分,主要负责处理用户请求 ...

  7. Django2.0路由层-URLconf

    目录 DJango2.0路由层-URLconf 概述 urlpatterns 实例 path转换器 自定义path转换器 使用正则表达式 命名组(有名分组) URLconf匹配请求URL中的哪些部分 ...

  8. word2vec原理(一) CBOW+Skip-Gram模型基础

    word2vec是google在2013年推出的一个NLP工具,它的特点是将所有的词向量化,这样词与词之间就可以定量的去度量他们之间的关系,挖掘词之间的联系.本文的讲解word2vec原理以Githu ...

  9. 10 腾讯云、django2.0、uwsgi、mysql、nginx 部署

    1.腾讯云 操作系统 Ubuntu Server 16.04.1 LTS 64位 获取root权限 ubuntu@VM---ubuntu:~$ sudo passwd root Enter new U ...

随机推荐

  1. C语言备忘录——qsort

    写了这么久的排序感觉还是用现成的最舒服.其实C语言其实自己带了一个快速排序在stdlib 库里,但是其函数调用的接口过于复杂,所以让人望而却步.为了加深自己的记忆,所以写下这篇博客 先来看一下函数原型 ...

  2. UVA - 524 Prime Ring Problem(素数环)(回溯法)

    题意:输入n,把1~n组成个环,相邻两个数之和为素数. 分析:回溯法. #pragma comment(linker, "/STACK:102400000, 102400000") ...

  3. 基于springboot实现Java阿里短信发送

    1.接口TestController import java.util.Random; import com.aliyuncs.DefaultAcsClient; import com.aliyunc ...

  4. js中const,val,let 的区别

    1. const定义的变量不可以修改,而且必须初始化. 2. var定义的变量可以修改,如果不初始化会输出undefined,不会报错. 3. let是块级作用域,函数内部使用let定义后,对函数外部 ...

  5. java简写名词解释

    RPC(Remote Procedure Call)—远程过程调用 实时编译器(Just In Time Compiler,JIT) XML 指可扩展标记语言(EXtensible Markup La ...

  6. 解决对路径bin\roslyn..的访问被拒绝

    使用visual studio开发,一重新编译就会报错: 对路径“bin\roslyn\System.Reflection.Metadata.dll”的访问被拒绝 一开始的解决办法就是把bin下的文件 ...

  7. yarn调度器 FairScheduler 与 CapacityScheduler

    yarn FairScheduler 与 CapacityScheduler CapacityScheduler(根据计算能力调度) CapacityScheduler 允许多个组织共享整个集群, 每 ...

  8. JAVA基本数据类型和注释

    一.注释 1.注释的概念 注释是程序中给人看的提示信息,会被编译器忽略:在程序编译和执行过程中不会有任何影响,仅仅在代码阅读时提供提示信息. 2.注释的形式 基本语法://注释的内容   a.行注释 ...

  9. Spring 面向切面编程(AOP)

    Spring 系列教程 Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of ...

  10. C# Stream篇(七) -- NetworkStream

    NetworkStream 目录: NetworkStream的作用 简单介绍下TCP/IP 协议和相关层次 简单说明下 TCP和UDP的区别 简单介绍下套接字(Socket)的概念 简单介绍下Tcp ...