Django连接mysql数据库浅析

一、安装pymysql

1. 查看已安装的第三方库的列表
   命令: pip list在这里插入图片描述
  2. 如果没有pymysql这个第三方库,则安装(需要注意的是django2.2版本的暂时还不支持pymysql,所以如果使用的话,需要先降到2.1版本,不然可能会报错,如果报错,请查看我上一篇的解决办法)
   命令:pip install django==2.1.0
   命令:pip install pymysql
  
  3. 安装成功后的第三方库
在这里插入图片描述

二、在主项目的文件中设置连接

1. 在项目主目录下的init文件中添加下面两句代码

import pymysql  # 导入第三方模块,用来操作mysql数据库

pymysql.install_as_MySQLdb()

需要注意的是,如果你import pymysql的时候下面有红线,并且你已经在你使用的python虚拟环境中安装好了pymysql模块,那么你可以重新打开一下你的项目:点击一下 File—> close project ----> 然后再打开你使用的项目,这时import 导入pymysql就不会报错了。

2. 在settings文件中设置数据库连接

DATABASES = {
    'default': {
        # python自带的一个数据库,基本不会被使用
        # 'ENGINE': 'django.db.backends.sqlite3',
        # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        # 注册我们自己使用的数据库连接
        'ENGINE': 'django.db.backends.mysql',  # 数据库引擎
        'NAME': 'mydb', #数据库名称
        'USER':'admin', # 连接数据库的用户名称
        'PASSWORD':'Root110qwe',  # 用户密码
        'HOST':'192.168.152.154', # 访问的数据库的主机的ip地址
        'PORT':'3306', # 默认mysql访问端口
    }
}

需要注意的是,host需要写成你的数据库所在的主机或虚拟机的ip地址,如果是在本机上或者是virtualbox中设置了端口转发可以使用127.0.0.1即可。

三、创建数据库模型类

1. 创建模型类(找到你需要使用模型的项目中的任意app的目录下的models文件)

from django.db import models

# Create your models here.

# 创建模型类
class  Meishi(models.Model):
    id = models.AutoField(primary_key=True)  # 该字段可以不写,它会自动补全
    food_name = models.CharField(max_length=30) # 设置食物名称
    food_author = models.CharField(max_length=8) # 设置食物制作人
    food_money = models.FloatField()  # 设置食物价格
    food_star = models.CharField(max_length=10,default='普通') # 设置食物美味程度

    def __str__(self):  # 重写直接输出类的方法
        return "<Meishi:{id=%s,food_name=%s,food_author=%s,food_money=%s,food_star=%s}>"\
               %(self.id,self.food_name,self.food_author,self.food_money,self.food_star)

2. 将我们创建好的模型类映射到数据库

a:

直接在命令行执行命令 : python manage.py makemigrations 或 python manage.py makemigrations app_name

可以指定你的项目中的app的名字;也可以不指定,直接映射该项目中全部的app中的表模型

b:

在pycharm中运行 Run manage.py Task 然后输人makemigrations 或 makemigrations app_name 同上面的效果是一样的
在这里插入图片描述
在这里插入图片描述
  3. 将我们映射的数据表真正在数据库中创建的对应的表

a:

直接在命令行执行命令 : python manage.py migrate 或 python manage.py migrate app_name

可以指定你的项目中的app的名字;也可以不指定,直接创建项目中所有app下映射好的表

b:

在pycharm中运行 Run manage.py Task 然后输人migrate 或 migrate app_name 同上面的效果是一样的

在这里插入图片描述
在这里插入图片描述

现在我们在数据库中就可以看到我们创建的表了,效果图如下:
   在这里插入图片描述

数据库中创建的表的名称是以项目中app的名称+我们自己创建的表的模型类的类名组合成的。

可以通过desc 表名的命令查看表结构就是我们在模型类中设置的表结构:
在这里插入图片描述

四、创建好对数据库增删改查的视图渲染方法

1. 在项目使用的app目录下的views.py文件中写增删改查的方法

from django.shortcuts import render        # 可以用来返回我们渲染的html文件
from django.http import HttpResponse       # 可以返回渲染的页面
from .models import Meishi                 # 导入我们的模型类
# Create your views here.

# 添加数据方法
def add_food(request):
    # 第一种方式插入数据
    tcpg = Meishi(food_name='糖醋排骨',food_author='一一',food_money=25,food_star='美味')
    tcpg.save()   # 一定要记得保存,不然数据无法插入进去
    # 第二种方式插入数据
    lzj = Meishi()
    lzj.food_name = '辣子鸡'
    lzj.food_author = '张三'
    lzj.food_money = '30'
    lzj.food_star = '超级美味'
    lzj.save()   # 一定要记得保存,不然数据无法插入进去
    # 第三种方式插入数据(该方法不需要保存,会自动保存)
    sltds = Meishi.objects.create(food_name='酸辣土豆丝',food_author='一一',food_money=25,food_star='美味')
    # 第四种方式插入数据(该方法不需要保存,且不会插入重复数据)
    clbc = Meishi.objects.get_or_create(food_name='醋溜白菜',food_author='李四',food_money=25,food_star='很美味')
    return HttpResponse("添加数据成功")

# 查询数据方法
def select_food(request):
    # 查询表中的所有数据
    rs = Meishi.objects.all()
    print(rs)
    # 根据筛选条件查询出表中的单挑数据(注意如果条件查询出多条数据,使用该语句会报错)
    rs1 = Meishi.objects.get(food_name='醋溜白菜')
    print(rs1)
    # 根据筛选条件查询出表中的数据(可查询出多条)
    rs2 = Meishi.objects.filter(food_author="一一")
    rs2 = list(rs2)
    print(rs2)
    return HttpResponse("查询数据成功")

# 更新数据方法
def update_food(request):
    # 根据条件查询后再修改再保存
    clbc = Meishi.objects.get(food_name='醋溜白菜')
    clbc.food_star = '难吃'
    clbc.save()
    # 直接修改所有的数据
    Meishi.objects.all().update(food_star='美味')
    return HttpResponse("修改数据成功")

# 删除数据方法
def delete_food(request):
    Meishi.objects.get(id=1).delete()
    return HttpResponse("删除数据成功")

2. 在项目中对应app下的urls文件中配置对应的路由

from django.urls import path,include  # path设置我们的路由,include可以设置我们的分路由
from . import views  # 将我们写好的views文件导入

urlpatterns = [   # 我们这个app的所有路由都会写在这个文件下
    path("add_food/",views.add_food),
    path("select_food/",views.select_food),
    path("update_food/",views.update_food),
    path("delete_food/",views.delete_food),
]

五、前端显示

这个时候我们通过我们设置的路由即可对数据库中的表进行增删改查操作:
http://127.0.0.1:8000/add_food/
http://127.0.0.1:8000/select_food/
http://127.0.0.1:8000/update_food/
http://127.0.0.1:8000/delete_food/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章