django模型系统一

django模型系统一

模型基础:

1.django的ORM

ORM:对象关系映射,用python表达数据库。

2.数据库配置

安装pymysql

修改项目目录下的__init__.py

 

import pymysql
pymysql.install_as_MySQLdb()

 

手动创建一个当前项目的空的数据库,准备一个有创建数据库权限的用户

settings配置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'crm' , #数据库名
        'USER': 'admin',
        'PASSWORD':'ROOT110qwe',
        'HOST':'127.0.0.1',
        'PORT':'3306'
    }

3.模型的创建与映射

模型

就是django.db.models.Model的一个子类

模型定义在app文件夹下的models.py

创建:

from django.db import models

# Create your models here.
class Student(models.Model):
    name=models.CharField(verbose_name='姓名',max_length=20)
    age=models.SmallIntegerField(verbose_name='年龄',null=True)
    sex=models.SmallIntegerField(default=1)
    qq=models.CharField(max_length=20,null=True)
    phone=models.CharField(max_length=20,null=True)
    c_time=models.DateTimeField(verbose_name='创建时间')

 激活模型:

  注册应用

  创建迁移 只是告诉django,我们修改了模型,他不会操作数据库

python manage.py makemigrations appname

  如果我们想看我们的更改会对数据库产生什么影响,我们可以看他大概会执行什么sql语句

python manage.py sqlmigrate teacher 0001

  执行迁移操作数据库,将对模型的改动应用到数据库(底层就是执行sql)

python manage.py migrate appname

  模型映射到数据库中是一张表,表名=appname_模型name   小写

  执行上面的命令,到底干了些什么

    在app中查找迁移文件,并且去django_migrations表中查找,如果没有执行的迁移文件,就去执行它。

    执行了迁移生成的sql语句

    如果成功,会在django_migrations表中增加一条记录

4.简单数据的增删改查 

django调试环境

python manage.py shell

增:

#第一种方式:
In [4]: Student.objects.all()                                          
Out[4]: <QuerySet []>

In [5]: s=Student()                                                    

In [6]: s                                                              
Out[6]: <Student: Student object (None)>

In [7]: s.name='jonney'                                                

In [8]: s.age=18                                                       

In [9]: Student.objects.all()                                          
Out[9]: <QuerySet []>

In [10]: s.save() #save之后才会写到数据库

#第二种方式
stu=Student.objects.create(name='jenny',age=18)   #直接创建

删:

#删一条
In [14]: stu.delete() Out[14]: (1, {'teacher.Student': 1})

#删多条

In [9]: Student.objects.filter(sex=1).delete()

Out[9]: (2, {'teacher.Student': 2})

#删所有

Student.objects.all().delete()

改:

#改一条
In [18]: s.age=16                                                      

In [19]: s.save()   

#改多条:

In [7]: Student.objects.all().update(sex=0)

Out[7]: 2

查:

#查所有
In [2]: Student.objects.all()
Out[2]: <QuerySet [<Student: jonney>, <Student: jenny>]> #查一条 In [3]: Student.objects.get(pk=1) Out[3]: <Student: jonney>
#get返回的是对象,如果反悔了多值,就会报错,返回零个也报错,只能返回一个
#带条件
In [4]: res=Student.objects.filter(sex=1)     #where sex=1
In [5]: res
Out[5]: <QuerySet [<Student: jonney>, <Student: jenny>]>

  

  

  

 

posted @ 2019-03-28 10:11  jonney_2019  阅读(104)  评论(0编辑  收藏  举报