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. react-redux性能优化之reselect

    在React-redux深入理解中,我们知道了 react-redux 是如何将 React 和 Redux 进行连接的,今天来说一下其中存在的性能问题以及改进的方式. 一.存在的性能问题 以 Red ...

  2. zznuoj 1195 : 猴子选大王(结构体专题)

    题目描述 n只猴子围坐成一个圈,按顺时针方向从1到n编号.然后从1号猴子开始沿顺时针方向从1开始报数,报到m的猴子出局,再从刚出局猴子的下一个位置重新开始报数,如此重复,直至剩下一个猴子,它就是大王. ...

  3. JQuery----操作01

    ---恢复内容开始--- 一 JQuery选择器: 基本选择器和基本过滤器和筛选选择器 基础选择器: <title>Title</title> <script src=& ...

  4. mysql Incorrect usage of UNION and ORDER BY 错误备忘

    出现这个错误的语句是酱紫的 select xxx from aaa order by xxx union all select yyy from bbb order by yyy 错误原因居然是,如果 ...

  5. Junit单元测试随笔

    Junit单元测试随笔 Mooctest 使用心得: Mooctest IDE非常适合新手使用,相比于Eclipse,他免去了配置环境的麻烦.eclipse中 Junit 编写代码经验总结 刚开始写测 ...

  6. Linux 配置SSH免密登陆

    1.在hadoop01服务器上 通过ssh -keygen 生成公私钥  [ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa] 2.把公钥给hadoop02服务器 3. ...

  7. TCP 选项RST

    1.RST介绍 RST表示reset复位,用于异常情况下关闭连接. 发送RST包关闭连接时,不必等缓冲区的包都发出去,直接就丢弃缓冲区中的包. 而接收端收到RST包后,也不必发送ACK包来确认. 2. ...

  8. 精读《C++ primer》学习笔记(第四至六章)

    第四章: 重要知识点: 4.1 基础 函数调用是一种特殊的运算符,它对运算对象的数量没有限制. 重载运算符时可以定义运算对象的类型,返回值类型,但运算对象的个数,运算符的优先级,结合律无法改变. 当一 ...

  9. System.DllNotFoundException: Unable to load DLL 'libgdiplus': The specified module could not be found.

    netcore 使用System.Drawing 出现如下错误: Unhandled Exception: System.TypeInitializationException: The type i ...

  10. C#使用NPOI读写Excel的注意事项

    NPOI的基本使用参照:https://www.cnblogs.com/lixiaobin/p/NPOI.html 既存文档读取修改方法 *既存Excel文档修改保存注意使用FileMode.Crea ...