Django框架之ORM(day72)
一 ORM即Object Relational Mapping,全称对象关系映射。
 1 不用写sql,不会sql的人也可以写程序
 2 开发效率高
 3 可能sql的效率低
二 ORM连接到MySQL的操作,如果连接mysql:
 1 在setting里配置:
  'default': {
   'ENGINE': 'django.db.backends.mysql',
   'HOST': '127.0.0.1',
   'PORT': 3306,
   'USER': 'root',
   'PASSWORD': 'admin',
   'NAME': 'lqz',}      #数据库名
 2.在app下的__init__.py里写:
  import pymysql
  pymysql.install_as_MySQLdb()
三 django-orm:
 1 不能创建数据库(需要手动创建数据库) (其中sqlite数据库在运行项目是自动创建数据库)
 2 可以创建数据表
 3 可以创建字段
四 数据库迁移 (每次更改数据库字段时都必须进行的操作,在命令行中进行2步)
 第一种方法
  1 python3 manage.py makemigrations   ----记录一下数据库的变化
  2 python3 manage.py migrate          ----将变化同步到数据库中
 第二种方法
  1 tools--->Run manage.py Task
  2 只需要敲命令:makemigrations(记录数据库的修改记录)e
  3 只需要敲命令:migrate(把数据同步到数据库)
五 字段的增删改查(***每次更改数据库字段时都必须进行的操作,在命令行中进行2步****)
 1 直接在app下models.py下查看类(库即可)
  class User(models.Model):
  id=models.AutoField(primary_key=True)  ##id设为主键
  name=models.CharField(max_length=32)
 2 直接在类下增加字段:(注意数据库迁移命令2条)
  注意:后来增加的字段,需要有默认值
  phone=models.CharField(max_length=64,default='120')  ##default='120'添加的默认值
 3 删除字段
  注释掉字段,执行数据库迁移命令
 4 修改数据
  直接修改字段,执行数据库迁移命令
六 数据库数据的增删改查(以user为例)  ***重点****:
 1 单表查询所有用户:ret=models.User.objects.all()
  得到的是 queryset对象(当成列表),列表里面,一个一个的对象[user1,user2]
 2 返回页面操作:render(request, 'userlist.html', {'user_list': ret})
 3 在userlist.html模板里:   {% for user in user_list %}
        #要循环的内容 
         {{user.name}}
        {% endfor%}  ##在返回浏览器页面时已经完成所有的替换工作(后台执行)
 4 get请求携带参数:
  http://127.0.0.1:8000/deleteuser/?id=1
  后台取值:request.GET.get('id')  ##推荐使用,当没有数据是不会报错
    request.GET['id']
 5 orm删除记录 models.User.objects.filter(id=id).delete()
  返回值:影响的行数(删掉数据的行数)
 6 前台post提交的数据取值:name=request.POST.get('name')
 7 orm保存(添加)的两种方式:
  1 user=models.User.objects.create(name=name,password=pwd,address=addr)
  2 user=models.User(name=name,password=pwd,address=addr)  ##先创建user对象在保存的数据库
    user.save()
 8 orm查询单条数据:user=models.User.objects.filter(id=id).first()
 9 orm的修改 models.User.objects.filter(id=id).update(name=name,password=pwd,address=addr)
七 django的请求生命周期
 https://www.cnblogs.com/liuqingzheng/articles/9509787.html#_label3
八 作业相关
 1 图书管理系统多表设计
  图书表--->出版社表---->一对多
   一对多的关系一旦确立,关联字段写在多的一方
  图书表--->作者表------>多对多
   多对多关系,需要创建第三张表
 2 三个表,再加上以个连接表 
  图书表
  出版社表
  作者
 3 图书管理系统:(需完成)
  1 作者增删查改
  2 出版社的增删查改
  3 图书的增删查改

day72Django之ORM的更多相关文章

  1. 终于等到你:CYQ.Data V5系列 (ORM数据层)最新版本开源了

    前言: 不要问我框架为什么从收费授权转到免费开源,人生没有那么多为什么,这些年我开源的东西并不少,虽然这个是最核心的,看淡了就也没什么了. 群里的网友:太平说: 记得一年前你开源另一个项目的时候我就说 ...

  2. Enterprise Solution 3.1 企业应用开发框架 .NET ERP/CRM/MIS 开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    行业:基于数据库的制造行业管理软件,包含ERP.MRP.CRM.MIS.MES等企业管理软件 数据库平台:SQL Server 2005或以上 系统架构:C/S 开发技术 序号 领域 技术 1 数据库 ...

  3. UWP开发之ORM实践:如何使用Entity Framework Core做SQLite数据持久层?

    选择SQLite的理由 在做UWP开发的时候我们首选的本地数据库一般都是Sqlite,我以前也不知道为啥?后来仔细研究了一下也是有原因的: 1,微软做的UWP应用大部分也是用Sqlite.或者说是微软 ...

  4. 搭建一套自己实用的.net架构(3)续 【ORM Dapper+DapperExtensions+Lambda】

    前言 继之前发的帖子[ORM-Dapper+DapperExtensions],对Dapper的扩展代码也进行了改进,同时加入Dapper 对Lambda表达式的支持. 由于之前缺乏对Lambda的知 ...

  5. CYQ.Data 从入门到放弃ORM系列:开篇:自动化框架编程思维

    前言: 随着CYQ.Data 开始回归免费使用之后,发现用户的情绪越来越激动,为了保持这持续的激动性,让我有了开源的念头. 同时,由于框架经过这5-6年来的不断演进,以前发的早期教程已经太落后了,包括 ...

  6. CYQ.Data V5 从入门到放弃ORM系列:教程 - Log、SysLogs两个日志类使用

    Log 静态类介绍: Public Static (Shared) Methods GetExceptionMessage 获取异常的内部信息 WriteLogToDB Overloaded. 将日志 ...

  7. CYQ.Data V5 从入门到放弃ORM系列:教程 - MAction类使用

    背景: 随着V5框架使用者的快速增加,终于促使我开始对整个框架编写完整的Demo. 上周大概花了一星期的时间,每天写到夜里3点半,终完成了框架所有功能的Demo. 同时,按V5框架名称空间的顺序,对每 ...

  8. ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库

    前段时间在园子里看到了小蝶惊鸿 发布的有关绿色版的Linux.NET——“Jws.Mono”.由于我对.Net程序跑在Linux上非常感兴趣,自己也看了一些有关mono的资料,但是一直没有时间抽出时间 ...

  9. 最好的5个Android ORM框架

    在开发Android应用时,保存数据有这么几个方式, 一个是本地保存,一个是放在后台(提供API接口),还有一个是放在开放云服务上(如 SyncAdapter 会是一个不错的选择). 对于第一种方式, ...

随机推荐

  1. android app内部更新适配到8.0

    app 内部跟新是app中必须要有的功能,在app出现改变时,app内部更新能以最快的速度将应用提升到最新版本. 步骤: 1.获取本地app的版本号 int versionCode = 0; try ...

  2. cocos creator

    动画效果: 如图在场景中创建一个空节点,点击添加Animatiion 选中要改变的属性.(以spriteFrame为例) 将选中的图片拖动到所示位置,此时点击播放按钮即可预览. 保存之后将层级管理器中 ...

  3. 二、2.1 Java的下载和安装

    1.下载Java 下载地址: https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html ...

  4. JS如何充分“压榨”浏览器

    不同浏览器厂商实现的 JS 标准有所不同,这意味着 window 对象和可用的 api 也有所不同,希望不久的将来,所有浏览器都能实现统一的 JS 标准. 自己写 api 是很耗费时间跟精力的,而且变 ...

  5. Charles 注册码/破解/激活

    Charles 注册码 软件去官网下载安装即可. 适用于Charles任意版本的注册码 Charles 4.2.7 目前是最新版,可用.   Registered Name: https://zhil ...

  6. 2.go的变量和常量

    go的变量和常量 GO的变量: 变量的声明:  先对变量进行声明,在对其赋值 var variableName type variableName = typeValue var number int ...

  7. 《DSP using MATLAB》Problem 7.25

    代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...

  8. 【缓存算法】FIFO,LFU,LRU

    一.FIFO算法 FIFO(First in First out),先进先出.其实在操作系统的设计理念中很多地方都利用到了先进先出的思想,比如作业调度(先来先服务),为什么这个原则在很多地方都会用到呢 ...

  9. [SQL Server] sysobjects的介紹

    sysobjects表 數據庫中所創建的每個對象(約束.默認值.日誌.規則.存儲過程等)都各以一行資訊呈現於表中. 而臨時對象只有在tempdb內,才在該表中各佔一行. sysobjects 表結構: ...

  10. Linux----------rsync的介绍及安装使用

    目录 一.rsync的介绍 1.1rsync的特点 二.rsync命令 三.rsync的ssh认证协议 四.ssh协议方式使用方法 五.rsync协议方式使用方法即 (rsync + inotifu- ...