1. ORM的两种

 DB first: 创建表结构--根据表结构生成类-----根据类来操作数据库

Code first: 先写代码------再写类----执行命令(一个类生成一个表)当前主流的用法。Django的ORM属于code first的。

2. 本质

  A-根据类自动创建数据库表

  B-根据类对数据库表中的数据进行各种操作

3. -models.py #ORM,写指定的类,通过命令可以创建数据库结构。

3. 先在models.py中写类

2.到setting里面去设置,然后在数据库中生成表。

运行这句时python manage.py makemigrations ,Python会去找所有的models.py,帮咱们在数据库中生成这个表。

但是当有2个models.py的时候(分别在APP01,APP02里面),django就不知道该找哪个了。所以需要到setting里面去设置一下。

把app01加进去,这样Django就会去找app01下面的models,帮你生成数据库。

2. 指定目录为APP01,设置完以后,再去找的时候就没有问题了。执行python manage.py makemigrations

生成了一个名字为0001_initial.py的临时文件,里面记录着生成数据库表结构的一些数据。

3. 真正地生成数据库

执行:python manage.py migrate

生成了一个名为:db.sqlite3的数据库,默认情况下用的是sqlite

4. 这个db.sqlite3中包含了很多表,有一些是django自己用的,我们创建的表的名字叫app01_userinfo.

创建出来的表默认是sqlite3类型的,是因为在setting里面默认指定的就是用这个来创建的。

5.如果想把数据库改为用mysql,只需要在setting里面做相应的修改即可。用下面的把上面的sqlite替换即可。

5. models.py中的程序

from django.db import models

# Create your models here.

#django的ORM是code first
#app01_userinfo class UserInfo(models.Model):
# id列,自增,主键
#创建用户名列,字符串类型,可以指定长度
username=models.CharField(max_length=32)
password=models.CharField(max_length=64)

6.创建类的过程

step-1: 在models.py中创建一个类,这个类必须继承models.Model
from django.db import models
#django的ORM是code first
#app01_userinfo

class UserInfo(models.Model): #这个类必须继承models.Model
# id列,自增,主键
#创建用户名列,字符串类型,可以指定长度
username=models.CharField(max_length=32)
password=models.CharField(max_length=64)

step-2: 在project下的setting里面注册APP

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01',
]

step-3: 执行命令
python manage.py makemigrations
python manage.py migrate

step-4: 表结构创建完成,生成了一个名为:db.sqlite3的数据库,数据库中生成了一张名为app01_userinfo的表。

7.本节笔记

四,ORM操作:对象关系映射(Object Relational Mapping,简称ORM,)
是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换
#对应关系
models.tb.objects.filter(id__gt=1)
models.tb.objects.filter(id=1)
models.tb.objects.filter(id__lt=1) db first:先创建数据库的表结构,根据表结构生成类,然后根据类来操作数据库。
code first:先写代码,这个类生成一个表,那个类也生成一个表。(主流的) 1.在models.py中创建一个类,这个类必须继承models.Model
from django.db import models
#django的ORM是code first
#app01_userinfo class UserInfo(models.Model): #这个类必须继承models.Model
# id列,自增,主键
#创建用户名列,字符串类型,可以指定长度
username=models.CharField(max_length=32)
password=models.CharField(max_length=64) 2.注册APP INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01',
] 3,执行命令
python manage.py makemigrations
python manage.py migrate

DjangoORM创建表结构以及生成数据库结构的更多相关文章

  1. atitit.自动生成数据库结构脚本,或者更换数据库,基于hibernate4

    atitit.自动生成数据库结构脚本,或者更换数据库,基于hibernate4 目前近况:: 更换数据库,但是是使用spring集成的. <!-- hibernate配置文件路径 --> ...

  2. 使用PowerDesigner创建表并导入到数据库

    使用PowerDesigner创建表并导入到数据库 刚刚学习使用PowerDesigner进行数据库的创建,下面我就分享一下如何创建表并导入到数据库. 1.首先到网上下载一下PowerDesigner ...

  3. Navicat生成数据库结构同步SQL

    作为一个苦逼的技术男,在做开发的时候经常会遇见程序版本升级,数据库结构变化.我们需要一个快捷的方式让客户尽快从旧版本数据库结构更新至新版本数据库结构.如果每做一次改动我们就记录一下当然是好事,但是万一 ...

  4. Qt 数据库创建表失败原因之数据库关键字

    本人数据库新手,在创建表时出现问题,最后经查证,找出问题所在.下面的程序是部分节选,在创建数据库表的时候,起先使用的L24的CreateDB,经测试,一直输出 Create testResult Fa ...

  5. oracle创建表空间、添加数据库文件

    创建表空间: create [undo|TEMPORARY]tablespace venn datafile '/opt/oracle/db01/app/oracle/oradata/OSSORCL/ ...

  6. ABP默认生成数据库结构

    数据库设计文档 -- MyFirstABP 数据库设计文档 数据库名:MyFirstABP 序号 表名 说明 1 AbpFeatures   2 AbpEditions   3 AbpLanguage ...

  7. 记录—JPA生成数据库表

    环境 springBoot+JPA+MySQL application-dev.yml 注意:配置中的blog数据库需要先创建,否则启动springBoot会报错 spring: #数据库连接配置 d ...

  8. Hibernate连接mysql数据库并自动创建表

    天才第一步,雀氏纸尿裤,Hibernate第一步,连接数据库. Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个 ...

  9. 使用laravel 的artisan快速创建表

    参考:使用laravel 的artisan快速创建表 字段类型参考链接: 结构生成器 版本: Laravel 4.2 1. 创建migrate 文件 php artisan migrate:make ...

随机推荐

  1. RHCE模拟考试

    真实考试环境说明: 你考试所用的真实物理机器会使用普通账号自动登陆,登陆后,桌面会有两个虚拟主机图标,分别是system1和system2.所有的考试操作都是在system1和system2上完成.S ...

  2. 【LG5055】可持久化文艺平衡树

    [LG5055]可持久化文艺平衡树 题面 洛谷 题解 终于不可以用\(Trie\)水了... 和普通的\(FHQ\;treap\)差不多 注意一下\(pushdown\).\(split\)要新开节点 ...

  3. Drupal8 Console 命令行工具

    转载:https://yplam.com/post/79 Drupal Console 是面向Drupal 8 的一套命令行工具,用来生成Drupal 8模板代码,并且可以跟Drupal 8应用进行交 ...

  4. HTML基本代码教学,第三天

    HTML 今天由于个人情况,身体不适,但是为了大家的学习进度,咱们以纯文字得形式来简单了解下今天的学习内容 今儿咱们来了解下表单 <form id=" "  name=&qu ...

  5. 人脸检测及识别python实现系列(1)——配置、获取实时视频流

    人脸检测及识别python实现系列(1)——配置.获取实时视频流 1. 前言 今天用多半天的时间把QQ空间里的几篇年前的旧文搬到了这里,算是完成了博客搬家.QQ空间里还剩下一些记录自己数学学习路线的学 ...

  6. Phaser3跟随自定义路径移动的赛车 -- iFIERO游戏教程

      racingcar 在线预览:http://www.ifiero.com/uploads/phaser/pathrotate/代码: var config = { type: Phaser.AUT ...

  7. Scala基础知识笔记2

    1 类 1.1 定义一个简单的类 1.2 field的getter 和 setter方法 感觉成员变量定义成  var 属性名=属性值即可,  不需要定义成 val 或者 private就行, // ...

  8. Hyperledger Fabric CouchDB as the State Database——使用CouchDB

    使用CouchDB作为状态数据库 状态数据库选项 状态数据库包括LevelDB和CouchDB.LevelDB是嵌入在peer进程中的默认键/值状态数据库,CouchDB是一个可选的外部状态数据库.与 ...

  9. Git + Gerrit 操作备忘

    Git review 作用 可以用来提交代码审核到Gerrit 安装 使用pip 安装 git-review 插件,执行 sudo -H pip install git-review 使用示例 可以参 ...

  10. 详解Python中的下划线

    本文将讨论Python中下划线(_)字符的使用方法.我们将会看到,正如Python中的很多事情,下划线的不同用法大多数(并非所有)只是常用惯例而已. 单下划线(_) 通常情况下,会在以下3种场景中使用 ...