django的ORM操作MySQL数据库


1.配置

  在应用之前要先进行配置,因为生成django项目之后默认的数据库不是mysql

(1)配置数据库

修改settings文件中的DATABASES
默认的状态:

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.sqlite3',
    'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

可以看到默认的数据库是sqlite3,将其改为mysql,如下所示:

DATABASES = {
'default': {
    # 使用的数据库类型,python支持各种数据库
    'ENGINE': 'django.db.backends.mysql',
    # 注意,NAME是连接使用的数据库名称
    'NAME': 'stus',
    'USER': 'root',
    'PASSWORD': '123456',
    'HOST': '127.0.0.1'
    }
}   

(2)建立数据模型

  在app下的models.py中进行修改
models文件中,已经为我们引入了models
在建立数据模型时继承自models.Model
根据需要给每个字段设置不同的Field,在数据库中就会表现为数据类型

from django.db import models

# Create your models here.

class LeaveWord(models.Model):
    ID = models.IntegerField(default=0,primary_key=True)
    name = models.CharField(max_length=20, null=False)
    email = models.EmailField(null=False, default='[email protected]')
    content = models.TextField(max_length=256)
    address = models.CharField(max_length=100, null=True, blank=True)

常见的参数

  • default 指定默认值
  • primary_key = True设置主键
  • null=’False’非空
  • max_length 长度,int默认为11
  • blank=True字段数据为空

(3)生成数据库变更文件

  打开run manage.py task执行makemigrations
  或在Terminal中输入python manage.py makemigrations
run manage.py task执行makemigrations

(4)执行migrate命令,即执行数据库变更文件

执行数据库变更文件
没有出现异常则此时数据表已经创建成功
  表名默认为”app名_数据模型类名”(通过class Meta的db_table可以更改),在数据库中可以查看到,
并且创建一些其他的数据表,是django其他模块所需的表

2. 应用

所做的一切无非都是为了基本的增删改查操作,只是不再需要直接写sql语句,而是通过对象的操作来映射到数据库。

(1)查询

需要引入models中我们建立的模型类,假设此时model是实例化后的对象
取值只需要 对象.属性名

  • model.object.all() 全部数据 返回一个列表queryset
  • model.order_by() 可以根据某个字段进行排序,默认为顺序,在这个字段前加上 - 则为倒序
  • model.object.get() 获取一个指定条件的对象
  • model.object.filter(id__dt = 1) 返回指定条件的对象,返回列表, 注意,大于:id__gt, 小于:id__lt,大于等于:id__gte,小于等于:id__lte

(2)修改

  修改的话就和对象属性的变更一样,查询到结果之后不管返回的是一个对象还是一个列表(列表中也是对象),都能直接 对象.属性名 进行更改,注意更改之后需要执行save()函数,以对变更做出提交和保存。

(3)添加

  添加一行数据在这里就是建立一个对象,添加的形式有三种:

  • 直接实例化一个model对象,给各个属性值进行赋值后,执行save函数保存。
  • create创建对象之后,会将对象信息直接保存到数据库
  • get_or_create 先获取是否有该数据,如果没有则添加,同样不需要

(4)删除

  删除的操作和修改一样基于查询后得到的对象
下面的语句删除了id为1的数据

model.objects.get(id=1).delete()

猜你喜欢

转载自blog.csdn.net/xinyan233/article/details/80003845