Django2.0模型基础——(一)
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模型基础——(一)的更多相关文章
- 《玩转Django2.0》读书笔记-Django建站基础
<玩转Django2.0>读书笔记-Django建站基础 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.网站的定义及组成 网站(Website)是指在因特网上根据一 ...
- Django2.0使用
创建项目: 通过命令行的方式:首先要进入到安装了django的虚拟环境中.然后执行命令: django-admin startproject [项目的名称] 这样就可以在当前目录下创建一个项目了. 通 ...
- Unity3D游戏开发初探—2.初步了解3D模型基础
一.什么是3D模型? 1.1 3D模型概述 简而言之,3D模型就是三维的.立体的模型,D是英文Dimensions的缩写. 3D模型也可以说是用3Ds MAX建造的立体模型,包括各种建筑.人物.植被. ...
- word2vec原理(一) CBOW与Skip-Gram模型基础
word2vec原理(一) CBOW与Skip-Gram模型基础 word2vec原理(二) 基于Hierarchical Softmax的模型 word2vec原理(三) 基于Negative Sa ...
- 【Python3.6+Django2.0+Xadmin2.0系列教程一】环境搭建及项目创建
由于工作需要,接触了大半年时间的Django+xadmin框架,一直没空对这块对进行相关的梳理.最近在同事的怂恿下,就在这分享下笔者的学习及工作经验吧. 好了,话不多说,下面开始进入正题: 环境需求: ...
- 《玩转Django2.0》读书笔记-探究视图
<玩转Django2.0>读书笔记-探究视图 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 视图(View)是Django的MTV架构模式的V部分,主要负责处理用户请求 ...
- Django2.0路由层-URLconf
目录 DJango2.0路由层-URLconf 概述 urlpatterns 实例 path转换器 自定义path转换器 使用正则表达式 命名组(有名分组) URLconf匹配请求URL中的哪些部分 ...
- word2vec原理(一) CBOW+Skip-Gram模型基础
word2vec是google在2013年推出的一个NLP工具,它的特点是将所有的词向量化,这样词与词之间就可以定量的去度量他们之间的关系,挖掘词之间的联系.本文的讲解word2vec原理以Githu ...
- 10 腾讯云、django2.0、uwsgi、mysql、nginx 部署
1.腾讯云 操作系统 Ubuntu Server 16.04.1 LTS 64位 获取root权限 ubuntu@VM---ubuntu:~$ sudo passwd root Enter new U ...
随机推荐
- C语言备忘录——qsort
写了这么久的排序感觉还是用现成的最舒服.其实C语言其实自己带了一个快速排序在stdlib 库里,但是其函数调用的接口过于复杂,所以让人望而却步.为了加深自己的记忆,所以写下这篇博客 先来看一下函数原型 ...
- UVA - 524 Prime Ring Problem(素数环)(回溯法)
题意:输入n,把1~n组成个环,相邻两个数之和为素数. 分析:回溯法. #pragma comment(linker, "/STACK:102400000, 102400000") ...
- 基于springboot实现Java阿里短信发送
1.接口TestController import java.util.Random; import com.aliyuncs.DefaultAcsClient; import com.aliyunc ...
- js中const,val,let 的区别
1. const定义的变量不可以修改,而且必须初始化. 2. var定义的变量可以修改,如果不初始化会输出undefined,不会报错. 3. let是块级作用域,函数内部使用let定义后,对函数外部 ...
- java简写名词解释
RPC(Remote Procedure Call)—远程过程调用 实时编译器(Just In Time Compiler,JIT) XML 指可扩展标记语言(EXtensible Markup La ...
- 解决对路径bin\roslyn..的访问被拒绝
使用visual studio开发,一重新编译就会报错: 对路径“bin\roslyn\System.Reflection.Metadata.dll”的访问被拒绝 一开始的解决办法就是把bin下的文件 ...
- yarn调度器 FairScheduler 与 CapacityScheduler
yarn FairScheduler 与 CapacityScheduler CapacityScheduler(根据计算能力调度) CapacityScheduler 允许多个组织共享整个集群, 每 ...
- JAVA基本数据类型和注释
一.注释 1.注释的概念 注释是程序中给人看的提示信息,会被编译器忽略:在程序编译和执行过程中不会有任何影响,仅仅在代码阅读时提供提示信息. 2.注释的形式 基本语法://注释的内容 a.行注释 ...
- Spring 面向切面编程(AOP)
Spring 系列教程 Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of ...
- C# Stream篇(七) -- NetworkStream
NetworkStream 目录: NetworkStream的作用 简单介绍下TCP/IP 协议和相关层次 简单说明下 TCP和UDP的区别 简单介绍下套接字(Socket)的概念 简单介绍下Tcp ...