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 + R


 3)在命令行输入 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创建的表查
 
posted @ 2018-11-06 19:11  温暖你的心  阅读(166)  评论(0编辑  收藏  举报