#Models  模型

数据结构 + 算法 = 程序

---> URL ---> VIEW ---> Temple --->

DB:分类---关系

Teacher   Student

姓名  年龄  地址  course

DB

MongoDB

Redis

-------------------------------------

# Models 模型

- ORM

  -ObjectRelationMap: 把面向对象思想转换成关系数据库

  * 类对应表格

  * 类中的属性对用表中的字段

  *在应用中的models.py文件中定义class

  *所有需要使用ORM的class都必须是models.Model的子类

  *class中的所有属性对应表格中的字段

  *字段的类型都必须使用 models.xxx 不能使用python中的

  *在django中,Models负责跟数据库交互

- django链接数据库

  - 自带默认数据库Sqllite3

    - 关系型数据库

    - 轻量级

  - 建议开发用sqlite3,部署用mysql之类数据库

    -  切换数据库在settings中进行设置

      # django 链接 mysql

      DATABASES = [

        'default' = {

          'ENGINE' : 'django.db.backends.mysql',

          'NAME':'数据库名',

          ‘PASSWORD’:'数据库密码',

          ‘HOST’:'127.0.0.1',

          'PORT':'3306',

        }

      ]

    -  需要在项目文件下的__init__文件中导入pymysql包

    # 在主项目文件下的__init__文件中导入pymysql包

      ···

      # 在主项目的__init__文件中

      import pymysql

      pymysql.install_as_MySQLdb()

      ···

# models类的使用

- 定义和数据库表映射的类

  - 在应用中的models.py文件中定义class  

  - 所有需要使用ORM的class都必须是models.Model的子类

  -  class中的所有属性对应表格中的字段

  - 字段的类型都必须使用  modles.xxx 不能使用python中的类型

- 字段常用参数

  1、max_length:规定数值的最大长度

  2、blank:是否允许字段为空,默认不允许

  3、null:在DB中控制是否保存为null,默认为false

  4、default:默认值

  5、unique:唯一

  6、verbose_name:假名

- 数据库迁移

    1、在命令行中,生成数据迁移的语句(生成sql语句)

      ```

      python3 manage.py makemigrations

      ```

    2、在命令行中,输入数据迁移的指令

      ```

      python manage.py migrate

      ```

      ps:如果迁移中出现没有变化或者报错,可以尝试强制迁移

     

      ···

      # 强制迁移命令

      python3 manage.py makemigrations 应用名

      python3 manage.py migrate 应用名

      ```

3、对于默认数据库,为了避免出现混乱,如果数据库中没有数据,每次迁移前自带的sqlite3数据库删除

deactivate

activate

-

Python---Models 模型的更多相关文章

  1. python学习-- Django根据现有数据库,自动生成models模型文件

    Django引入外部数据库还是比较方便的,步骤如下 : 创建一个项目,修改seting文件,在setting里面设置你要连接的数据库类型和连接名称,地址之类,和创建新项目的时候一致 运行下面代码可以自 ...

  2. 转 Django根据现有数据库,自动生成models模型文件

    Django引入外部数据库还是比较方便的,步骤如下 : 创建一个项目,修改seting文件,在setting里面设置你要连接的数据库类型和连接名称,地址之类,和创建新项目的时候一致 运行下面代码可以自 ...

  3. Django models模型

    Django models模型 一. 所谓Django models模型,是指的对数据库的抽象模型,models在英文中的意思是模型,模板的意思,在这里的意思是通过models,将数据库的借口抽象成p ...

  4. python django模型内部类meta详细解释

    Django 模型类的Meta是一个内部类,它用于定义一些Django模型类的行为特性.下面对此作一总结: abstract      这个属性是定义当前的模型类是不是一个抽象类.所谓抽象类是不会相应 ...

  5. django的models模型类的常用数据类型和选项

    django框架的models模块ORM框架,能够让我们通过编写类的方式,帮助我们自动生成数据库表. 生成的数据库表名为 应用模块名称_类名 数据库表中字段名 如果我们没有在参数中指定,就是我们写的类 ...

  6. 玩转python主题模型程序库gensim

    gensim是python下一个极易上手的主题模型程序库(topic model),网址在:http://radimrehurek.com/gensim/index.html 安装过程较为繁琐,参考h ...

  7. models模型层

    ORM简介 查询数据层次图解:如果操作mysql,ORM是在pymysq之上又进行了一层封装 MVC或者MTV框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需 ...

  8. <Django> MVT三大块之Models(模型)

    1.ORM(对象-关系-映射)---面向对象,不需要面向SQL语句 根据对象的类型生成表结构 将对象.列表的操作,转化成SQL语句 将SQL语句查询的结果转化成对象.列表 目的:实现数据模型与数据库的 ...

  9. python sklearn模型的保存

    使用python的机器学习包sklearn的时候,如果训练集是固定的,我们往往想要将一次训练的模型结果保存起来,以便下一次使用,这样能够避免每次运行时都要重新训练模型时的麻烦. 在python里面,有 ...

  10. pd的django To do list教程-----(2)models模型的建立

    1:在models.py中建表 from django.db import models class Tcontent(models.Model): content = models.CharFiel ...

随机推荐

  1. Angular路由——辅助路由

    一.辅助路由语法 同时控制多个插座内容. 第一步: 模版上除了主插座,还需要声明一个带name属性的插座 第二步: 路由配置中配置name为aux的插座上可以显示哪些组件,比如显示xxx和yyy组件. ...

  2. 在vue里添加好看的lottie动画 (^_^)

    为什么用lottie ★~★ 1.能让你的程序不那么单调 2.能让一些有审美强迫症的同学好受一点 3.网上有丰富的资源 点我进入lottie资源网站 引入lottie库 (>.<) 在vu ...

  3. pycharm中join的应用

    学习python这几天发现jion的两种用法 li = "alexericrain" v = ["_".join(li)] print (v) #第一种输出结果 ...

  4. 友元(friend)

    1.友元类的关系不能传递和继承 ...待续

  5. STL 中 使用迭代器删除元素的问题

    在vector中删除,大家都知道,直接erase的话,这种写法很有问题.因为erase(iter)之后iter指针就变成野指针了,此时继续iter++就会出问题. for(auto iter = v. ...

  6. MongDB增删改查

    增加 增加一条:db.th.insertOne({}) // 返回 _id 增加多条:db.th.insertMany([{},{},{}]) // 返回 _ids 针对Array增加操作: db.s ...

  7. haskell实现简易计算器

    > module Main where > import System.IO > import Data.Char > import Control.Monad > im ...

  8. ECMA Script 6_RegExp 正则表达式

    在 ES5 中 RegExp 构造函数的参数有两种情况 RegExp(字符串, 正则表达式的修饰符) RegExp(正则表达式); var regex = new RegExp('xyz', 'i') ...

  9. VMware workstation --虚拟机静态ip设置

    背景介绍 我在本机win10上安装VMware workstation软件,新建两台centos7虚拟机,最近在配服务,每天虚拟机重启后,ip总会变,服务配置文件又要修改,很麻烦,便需要将其ip由dh ...

  10. tp5.0与mysql存储过程

    存储过程是一组预编译的sql语句,只需要创建一次过程,以后在程序中就可以调用该过程任意次,执行的速度快于普通sql语句,对于没有权限执行存储过程的用户,也可授权他们执行存储过程,存储过程是保存在数据库 ...