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. golang开启随机端口并获取端口

    listener, err := net.Listen("tcp", ":0") if err != nil { panic(err) } fmt.Printl ...

  2. CSS - 解决placeholder不起作用的方法

    input::placeholder {     font-size: 12px;     letter-spacing: 1px;     color: #A8C9FF !important; } ...

  3. 《新标准C++程序设计》3.8(C++学习笔记10)

    友元 友元分为友元函数和友元类两种. 一.友元函数 在定义一个类的时候,可以把一些函数(包括全局函数和其它类的成员函数)声明为“友元”,这样那些函数就成为该类的友元函数,在友元函数内部就可以访问该类对 ...

  4. HDU 4902 Nice boat 多校4 线段树

    给定n个数 第一个操作和普通,区间覆盖性的,把l-r区间的所有值改成固定的val 第二个操作是重点,输入l r x 把l-r区间的所有大于x的数,变成gcd(a[i],x) a[i]即指满足条件的序列 ...

  5. Java中的String介绍

    一.概述 String是代表字符串的类,本身是一个最终类,使用final修饰,不能被继承. 二.String字符串的特征 1. 字符串在内存中是以字符数组的形式来存储的. 示例如下,可以从String ...

  6. 模块化es6规范

    阮一峰Module 的语法 1.概述 历史上,JavaScript 一直没有模块(module)体系,无法将一个大程序拆分成互相依赖的小文件,再用简单的方法拼装起来. 在 ES6 之前,社区制定了一些 ...

  7. Windows2008R2安装iis和iis下搭建web服务器(9.18 第七天)

    IIS internet information services 互联网信息服务微软开发的运行在windows中的互联网服务,提供了web.ftp.smtp服务 Windows server 200 ...

  8. BZOJ:1927: [Sdoi2010]星际竞速

    题解:最小费用流+二分图模型: 左边表示出这个点,右边表示入这个点: #include<iostream> #include<cstdio> #include<cstri ...

  9. Loadrunner安装与破解

    一.安装loadrunner 1. 点击setup.exe 2. 点击安装完整程序 3. 点击确定,安装必需程序 4. 安装vc2005的时候报了如下错,导致无法继续安装,没有报错可跳过第五步 5. ...

  10. SpringBoot之Order注解启动顺序

    order的规则: order的值越小,优先级越高order如果不标注数字,默认最低优先级,因为其默认值是int最大值该注解等同于实现Ordered接口getOrder方法,并返回数字. @Reten ...