zoukankan      html  css  js  c++  java
  • DjangoORM创建表结构以及生成数据库结构

    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
    
    	
    
  • 相关阅读:
    ng -v 不是内部或外部命令
    更改package.js后重新加载
    表格添加滚动条
    eclispse指针变成十字型
    清除输入框缓存数据
    用cd 命令进入和退出D盘文件夹的操作步骤。
    npm ERR! cb() never called! npm ERR! This is an error with npm itself. Pleas
    离开电脑时锁定电脑
    slice
    golang之字符串
  • 原文地址:https://www.cnblogs.com/momo8238/p/7516072.html
Copyright © 2011-2022 走看看