Django day03 orm介绍
一:orm介绍
就是对象关系映射,python当中的类能够对应到数据库当中的某一个表(一个类对应一个表),一个类的对象对应着数据库中的一条记录,类当中的某个字段对应着数据库当中表的字段,字段拥有不同的类型(可以是主键,可以为空等等),后面对应的东西又是一个类,类里面又可以传一些东西,来标注它是不是主键以及他的类型是什么 就目前来说,对我们最重要的是以下几点:
-views.py (视图函数) [最核心的文件都是在这里面写]
-models.py (对象关系的映射)
-urls.py (路由关系)
-其余的是对settings.py的配置 [简单关注一下]二: 在 Navicat Premium 数据库中打开并查看保存的数据
1.分别在这两个文件中修改一些个人数据信息,
图1: 在 _init_.py 调用要使用的数据库
图2: 在 settings.py 中修改用户信息和要使用的数据库
如下图:![]()
2. 记录数据库的修改记录
1)正常情况下在Terminal中输入: python3 manage.py makemigrations
2)也可以在(如图)Tools --> run manage.py Task 敲命令 --> makemigrations 或者输入快捷键 Ctrl + Alt + R3)在命令行输入 migrations 后会在 migrations 文件夹里出现一个 0001_inital.py 文件,里面是一个记录数据库的修改记录,并没有吧数据同步到数据库里,文件内容是这个样子的,如图:
3. 同步记录到数据库
1)正常情况下在Terminal中输入: python3 manage.py migrate
2)同理,在Tools --> run manage.py Task 敲命令 --> migrate
3)在命令行输入 migrate 后会帮我们创建一些表,还有一些其他app的表,创建完成的表放在了 db.sqlite3 里面
4)打开方式:右边角点击(Database) --> 点击弹出的窗口左上角的小加号 --> 点击Data Source --> 点击Sqlite 进去后的界面如下图,完成三个步骤后点击OK, 即可,这个是在PyCharm文件中打开的数据库,着重关注: migrations这个文件夹千万千万千万别删掉,虽然能找回来,但也会被老板骂死,如果数据较为庞大,就不能找回所有数据,所以,如果不小心删了,就...跑路吧 23333
4. 完成以上操作后打开 Navicat Premium 数据库,找到自己设置的文件名找到保存的表即可,注意:文件名不能重名,否则就打不开了,不要轻易修改表名,让它默认生成,好做区分
三: orm 能和不能干的事
1. 能创建数据表,新增和修改,删除字段
注意:
1)以后要在数据库中进行增删改,一旦用了 orm 创建, 就都要在 orm 中创建,在数据库中修改只能改数据, 其它的字段,表,增删改等等,只能通过 orm 来处理2)数据传入之后不要急着运行,执行Tools命令后
2. 不能创建数据库
四: id name password 介绍
id: id = models.AutoField(primary_key=True)
创建了这个类之后,如果数据库迁移,他就会在数据库里做出一个表,数据库当中的某一个字段还有一些属性,比如说它是什么类型的,可不可以为空,如果不把这些东西定义成一个类的对象的话,没有什么东西可以表达出 AutoField(primary_key=True) 的属性,所以定义了一个类,类里面可以传一些属性,来标志这个(AutoField)类 name: name = models.CharField(max_length)
这是一个字段, 第一AutoField是自增的,其次primary_key=True是一个主键,id对应了一个类的对象,CharField对应到数据库是一个varchar类型,它对应的长必须要传一个长度,不然就会报错 password: password = models.CharField(max_length=32)
同理创建password,这样只是创建一个表,已及写了这些字段,对数据库没有任何的影响,所以我们要进行数据库的迁移,这样才能把数据同步到数据库里
1) 连接mysql数据库,连接mysql数据库需要在settings中做一些配置,通过反射去settings中找DATDINE,在Django当中大量的运用到了反射和元类
2) 新建app没有在 _init_ 里面做配置,程序也能运行,但是到了程序迁徙就会报错,app如果没有注册,执行迁徙的命令就不行了,不知道你用哪个app创建的表查
Django day03 orm介绍的更多相关文章
- Django中ORM介绍和字段及字段参数 Object Relational Mapping(ORM)
Django中ORM介绍和字段及字段参数 Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简 ...
- 6月20日 Django中ORM介绍和字段、字段参数、相关操作
一.Django中ORM介绍和字段及字段参数 二.Django ORM 常用字段和参数 三.Django ORM执行原生SQL.在Python脚本中调用Django环境.Django终端打印SQL语句 ...
- Django中ORM介绍和字段及其参数
ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM是通过使用描述 ...
- Django中ORM介绍
Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据 ...
- Django中ORM介绍和字段及字段参数
Object Relational Mapping(ORM) 1 ORM介绍 1.1 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对 ...
- Django中ORM介绍和字段参数
Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据 ...
- Django中ORM介绍和字段
ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM是通过使用描述 ...
- django的orm介绍以及静态文件介绍
1 django中app的概念 大学:----------------- 项目 信息学院 ----------app01 物理学院-----------app02*强调:创建了app,要在配置文件中注 ...
- django中的ORM介绍和字段及字段参数
Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据 ...
随机推荐
- Centos6.4 安装fail2ban防暴力破解
Centos6.4 安装fail2ban防暴力破解 一. 安装 curl -O https://codeload.github.com/fail2ban/fail2ban/tar.gz/0.9.0 m ...
- =new、=null、.clear()、system.gc()的区别
开发经验告诉我 = new是指向另一个地址空间 =null对象被回收 .clear()对象被清空,但是仍然指向原来的地址空间 这三种方式都并没有真正的清理内存 只有system.gc()是直接清理,但 ...
- 2019 支付宝App支付 --- PHP
SDK下载:https://docs.open.alipay.com/54/106370/;联系客服:https://cschannel.alipay.com/newPortal.htm?scene= ...
- CAD设置当前显示的光标(com接口VB语言)
主要用到函数说明: MxDrawXCustomFunction::Mx_SetCursor 设置当前显示的光标,光标可以从cur文件加载,详细说明如下: 参数 说明 CString sCursorFi ...
- 谈一谈a:link、a:visited、a:hover、a:active的正确使用顺序
前端路上,未来还远,所以基础部分必须扎实,走好现在脚下的每一步才是现在最重要的. 下面进入正题吧. 1. <a>标签 我们先说一说<a>标签是干啥用的. <a> 标 ...
- 基于jquery的常见函数封装
/// <reference path="jquery-1.8.0.min.js" />/** DIV或元素居中* @return*/jQuery.fn.mCenter ...
- 【codeforces 796A】Buying A House
[题目链接]:http://codeforces.com/contest/796/problem/A [题意] 让你选一个最靠近女票的,且能买的房子; 输出你和你女票的距离; [题解] 枚举 [Num ...
- hdu 2242双联通分量+树形dp
/*先求出双联通缩点,然后进行树形dp*/ #include<stdio.h> #include<string.h> #include<math.h> #defin ...
- Luogu P3740 [HAOI2014] 贴海报 线段树
线段树版的海报 实际上这个与普通的线段树相差不大,只是貌似数据太水,暴力都可以过啊 本来以为要离散的,结果没打就A了 #include<iostream> #include<cstd ...
- [MongoDB]Python 操作 MongoDB
from pymongo import MongoClient mc = MongoClient('localhost',27017) db = mc.users db.users.save({'na ...