Django模型系统

Django模型系统

一、django的ORM

定义:对象关系的映射(通俗讲python表达数据库)

二、数据库配置

1、在虚拟环镜中安装pymysql

  命令:pip install pymysql

2、修改项目目录下的__init__.py文件

import pymysql
pymysql.install_as_MySQLdb()

3、手动用命令创建一个数据库,也可以用工具(Navicat For MySQL)软件创建一个数据库

4、配置settings.py文件

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'crm', #创建好的数据库名称
'USER': 'root', #用户名
'PASSWORD': 'qw123', #密码
'HOST': '127.0.0.1', #IP地址
'PORT': '3306' #端口
}

三、模型的创建与映射

模型:就是django.db.models的一个子类

模型类->数据表;类属性->表字段名

模型类必须都写在app目录下models.py文件中

1、创建一个模型 ,例:

class Student(models.Model):
name = models.CharField(verbose_name='姓名', max_length=20)
age = models.SmallIntegerField(verbose_name='年龄',null=True)
sex = models.SmallIntegerField(default=1) #表示默认就是1
QQ = models.CharField(max_length=20,null=True)
phone = models.CharField(max_length=20, null=True)
c_time = models.DateTimeField(verbose_name='创建时间')

模型类代表了一个数据库中的一个表

2、激活模型

  2.1 注册应用(非常重用)

  2.2 创建迁移(只是告诉django,我们修改了模型,它不操作数据库)

    命令:python manage.py makemigrations  appname(如果app名不加,表示迁移所有的)

    例:python manage.py makemigrations

    # 如果我们想看,我们的更改会对数据库产生什么影响

      命令:python manage.py sqlmigrate teacher 0001

  2.3 执行迁移(操作数据库,将对模型的改动应用到数据库)

    命令:python manage.py  migrate  appname  (如果app名不加,会把所有app下的改动映射到数据库)

    例:python manage.py migrate teacher

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

  注:如果修改了模型,必须要重新(创建迁移),然后在(执行迁移)

 

四、简单的数据的增、删、改、查

1、增:
 第一种方式如下:

In [1]: from teacher.models import Student

In [2]: s=Student()

In [3]: s.name='沈毅'

In [4]: s.age=18

In [5]: s.sex='男'

In [6]: s.save()

注:一定保存,才会写入数据库

  第二种方式如下:

stu=Student.objects.create(name='小李',age=18)     

注:直接创建

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

2、删:

In [13]: stu.delete()
Out[13]: (1, {'teacher.Student': 1})

删除所有的记录:

In [13]: Student.objects.all().delete()

根据条件删除记录:

In [13]: Student.objects.filter(age=18).delete()

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

3、改:

In [14]: stu=Student.objects.create(name='小李',age=18)

In [15]: stu.age=16

In [16]: stu.save()

根据条件,修改数据

In [11]:  Student.objects.filter(name='小李').update(sex=2)   

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

 4、查:

第一种   查一条记录:

 

In [6]: Student.objects.get(pk=1)
Out[6]: <Student: 沈毅>

注:get返回的是对象,如果返回了多值就会报错,比如pk=2,那就会报错

第二种   查所有记录:

In [3]: Student.objects.all()
Out[3]: <QuerySet [<Student: 沈毅>, <Student: 小李>]>

第三种   带条件查记录:

In [13]: Student.objects.filter(sex=2)
Out[13]: <QuerySet [<Student: 小李>]>

 

posted on 2019-03-28 16:20  nickshen  阅读(111)  评论(0编辑  收藏  举报

导航