Django教程(003):orm操作数据库

发布于:2024-07-21 ⋅ 阅读:(156) ⋅ 点赞:(0)

1 orm连接Mysql

Django为了使操作数据库更加简单,提供了ORM框架。

1.1 安装第三方模块

pip install mysqlclient

安装成功

在这里插入图片描述

注意,如果安装报错,去官网下载mysqlclient.whl包进行安装,下载地址https://pypi.org/project/mysqlclient/#files,选择适合自己Python版本的包即可

在这里插入图片描述

1.2 ORM

ORM可以帮助我们做两件事:

  • 创建、修改、删除数据库中的表

  • 操作表中的数据(不用写sql语句

    • select
      insert
      update
      

1.2.1、创建数据库

  • 启动mysql服务
  • 自带工具创建数据库
CREATE DATABASE django_learning DEFAULT CHARSET UTF8 COLLATE utf8_general_ci;

在这里插入图片描述

1.2.2、Django连接数据库

创建新的django项目mysite2

django-admin startproject mysite2

创建app

python manage.py startapp app01

找到mysite2/mysite2/settings.py文件,添加DATABASE配置文件

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'django_learning',
        'USER': 'root',
        'PASSWORD': '3535',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}

1.2.3、django操作表

  • 创建表
  • 删除表
  • 修改表

models.py文件中:

在这里插入图片描述

class UserInfo(models.Model):
    name = models.CharField(max_length=32)
    password = models.CharField(max_length=64)
    age = models.IntegerField()

执行上述命令的时候,相当于执行了以下sql代码

"""
create table app01_userinfo(
    id integer primary key autoincrement,
    name varchar(32),
    password varchar(64),
    age int
)
"""

注意:,这个时候数据库是不存在表的

在这里插入图片描述

执行命令创建表,注意:执行命令之前,要注册app

在这里插入图片描述

python manage.py makemigrations
python manage.py migrate

在这里插入图片描述

再次查看django_learning数据库中的表信息,app01_userinfo表已经创建成功:

在这里插入图片描述

1.2.4、创建和修改表结构

需要创建表的时候,只需要再次在settings.py中添加如下代码即可,比如需要创建部门表和角色表

class Department(models.Model):
    title = models.CharField(max_length=32)


class Role(models.Model):
    caption = models.CharField(max_length=32)

接着重新执行如下命令

python manage.py makemigrations
python manage.py migrate

查看数据库表信息,创建成功

在这里插入图片描述

注意,删除表或者字段的时候,只需要把代码注释掉,然后重新执行命令就行。

1.2.5、增删改查

1.2.5.1 增加数据

urls.py中添加以下代码

path("orm/", views.orm),

views.py中添加以下代码

def orm(request):
    Department.objects.create(title='销售部')
    Department.objects.create(title='IT部')
    Department.objects.create(title='运行部')
    return HttpResponse("成功")

启动django程序

python manage.py runserver

浏览器访问http://127.0.0.1:8000/orm/
在这里插入图片描述

查看app01_department表中是否有数据

在这里插入图片描述

接着向userinfo表中添加数据

def orm(request):
    # Department.objects.create(title='销售部')
    # Department.objects.create(title='IT部')
    # Department.objects.create(title='运行部')

    UserInfo.objects.create(name="张三", password="123", age=18)
    UserInfo.objects.create(name="李四", password="123", age=18)
    return HttpResponse("成功")

刷新浏览器,查看数据

在这里插入图片描述

1.2.5.2 删除数据
def orm(request):
    # 删除id为2的数据
    UserInfo.objects.filter(id=2).delete()
    # 删除所有数据
    Department.objects.all().delete()
    return HttpResponse("成功")

修改代码之后,刷新浏览器,重新查看数据库中的数据

在这里插入图片描述

1.2.5.3 获取数据

添加如下代码:

def orm(request):
    data_list = UserInfo.objects.all()
    for data in data_list:
        print(data.id, data.name, data.password, data.age)
    return HttpResponse("成功")

刷新浏览器之后,查看控制台的输出

在这里插入图片描述

根据id获取数据,当你确定数据只有一行的时候,可以使用.first()来直接获取数据对象,而不是data_list

def orm(request):
    data_list = UserInfo.objects.all()
    for data in data_list:
        print(data.id, data.name, data.password, data.age)

    data = UserInfo.objects.filter(id=3).first()
    print(data.id, data.name, data.password, data.age)
    return HttpResponse("成功")

在这里插入图片描述

1.2.5.4 修改数据

可以全部修改,也可以根据id条件修改

def orm(request):
        # 更新所有的
    UserInfo.objects.all().update(password='999')
    UserInfo.objects.filter(id=3).update(password='Lisi123')
    return HttpResponse("成功")

刷新浏览器,查看数据信息,修改成功

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到