欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

django的ORM操作MySQL数据库

程序员文章站 2024-03-14 12:24:22
...

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='aaa@qq.com')
    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
django的ORM操作MySQL数据库

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

django的ORM操作MySQL数据库
没有出现异常则此时数据表已经创建成功
  表名默认为”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()
相关标签: django