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. 原生searchView 自定义样式

    https://www.jianshu.com/p/f1fe616d630d 去除搜索框中的图标 <style name="SeachViewActivityTheme" p ...

  2. Python3中的bytes和str类型

    Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分.文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示.Python 3不会以任意隐式的方式混用str和b ...

  3. centos6.5搭建hadoop单节点

    1.添加用户 groupadd  hadoop useradd -d /home/hadoop -m hadoop -g hadoop passwd hadoop    修改密码 付给用户sudo权限 ...

  4. Vulkan SDK 之 Graphics Pipeline

    A graphics pipeline consists of shader stages, a pipeline layout, a render pass, and fixed-function ...

  5. Emacs: 设置窗口标题格式

    Emacs默认的窗口标题常常比较简单,例如我的默认标题是"emacs@ubuntu".如果想要在标题中显示更多的信息,我们可以对它进行一些设置.由于Emacs的可扩展性,这种修改实 ...

  6. 五十九、SAP中常用预定义系统变量

    一.SAP中常用预定义系统变量 内容如下: 二.系统变量定义在结构SYST里,我们打开SE38 三.在代码编辑器输入SYST变量 四.双击SYST,来到这个系统结构,里面有很多系统变量 五.我们随便写 ...

  7. net GC 学习以及问题

    引用对象必要空间开销:对象指针.同步块索引 GC重要点: 每个应用程序包含一组根,每个根都是一个存储位置,其中包含指向引用类型对象的一个指针,该指针要么指向托管堆中的要给对象,要么为null.(这句话 ...

  8. XTU 1205 Range

    还是五月湘潭赛的题目,当时就是因为我坑...连个银牌都没拿到,擦. 这个题目枚举区间是不可能的,明显是要考虑每个数对全局的影响,即找到每个数最左和最右能满足是最大的位置 以及 最小的时候,相乘即为该数 ...

  9. 实验3- 熟悉常用的 HBase 操作

        石家庄铁道大学信息科学与技术学院               实验报告 2018年----2019年  第一学期                       题目:  熟悉常用的 HBase ...

  10. 使用BurpSuite和Hydra爆破相关的服务(9.25 第十一天)

    使用BP和Hydra爆破相关的服务 Hydra:九头蛇,开源的功能强大的爆破工具,支持的服务有很多,使用Hydra爆破C/S架构的服务. 使用BurpSuite爆破web服务 DVWA:web应用程序 ...