Python Django 之连接 Mysql 数据库详解
作者:mmseoamin日期:2023-12-21

文章目录

  • 1 概述
    • 1.1 Mysql 下载和安装
    • 1.2 菜单目录
    • 2 ORM 框架
      • 2.1 连接 Mysql 模块:mysqlclient
      • 2.2 创建数据库
      • 2.3 连接 Mysql
      • 2.4 创建表
      • 2.5 增删改查
      • 3 扩展
        • 3.1 ERROR:2026, 'SSL connection error: unknown error number'

          1 概述

          1.1 Mysql 下载和安装

          • 博客:https://blog.csdn.net/qq_34745941/article/details/122549376
          • 若已安装,请忽略。

            1.2 菜单目录

            • 主要使用的文件如图

              Python Django 之连接 Mysql 数据库详解,在这里插入图片描述,第1张

              2 ORM 框架

              2.1 连接 Mysql 模块:mysqlclient

              > pip install mysqlclient
              
              • 若 pip 安装失败,可进入 Python 官方库中下载 whl 文件,操作可参考:
              • 博客:https://blog.csdn.net/qq_34745941/article/details/106341898

                2.2 创建数据库

                # 创建数据库
                > create database Demo DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
                > 
                > # 展示数据库
                > show databases;
                

                Python Django 之连接 Mysql 数据库详解,在这里插入图片描述,第2张

                2.3 连接 Mysql

                在 settings.py 中,配置 Mysql 的连接串

                DATABASES = {
                    'default': {
                        'ENGINE': 'django.db.backends.mysql',  # 不做修改
                        'NAME': 'demo',  # 数据库名
                        'USER': 'root',  # 用户名
                        'PASSWORD': '12345',  # 密码
                        'HOST': '127.0.0.1',  # 主机
                        'PORT': '3306',  # 端口号(默认)
                    }
                }
                

                扩展:

                Django 也支持其它数据库:官方文档:https://docs.djangoproject.com/zh-hans/3.2/ref/databases/

                2.4 创建表

                Python Django 之连接 Mysql 数据库详解,在这里插入图片描述,第3张

                注意:

                ① 该类可重复执行

                ② 若类中的字段存在变更,则数据库表中的字段也同步变更

                ③ 若该类删除,则数据库中的表也同步删除

                settings.py 中:

                INSTALLED_APPS = [
                    'django.contrib.admin',
                    'django.contrib.auth',
                    'django.contrib.contenttypes',
                    'django.contrib.sessions',
                    'django.contrib.messages',
                    'django.contrib.staticfiles',
                    'app01.apps.App01Config'  # 注册项目
                ]
                

                models.py 中:

                from django.db import models
                # 参数 models.Model 固定
                class UserInfo(models.Model):
                    name = models.CharField(max_length=32)
                    password = models.CharField(max_length=64)
                    age = models.IntegerField()
                

                终端中依次执行命令:数据库迁移,同步表结构!

                > python manage.py makemigrations
                > python manage.py migrate
                

                可选,创建管理员

                python manage.py createsuperuser

                Python Django 之连接 Mysql 数据库详解,在这里插入图片描述,第4张

                查询表:

                mysql> use demo;
                mysql> desc app01_userinfo;
                

                Python Django 之连接 Mysql 数据库详解,在这里插入图片描述,第5张

                2.5 增删改查

                views.py:

                from django.shortcuts import render, HttpResponse
                from app01.models import UserInfo
                # Create your views here.
                def orm(request):
                    # 1.添加数据
                    UserInfo.objects.create(name="张三", password=123, age=18)
                    UserInfo.objects.create(name="李四", password=456, age=20)
                    UserInfo.objects.create(name="王五", password=789, age=22)
                    # 2.删除数据
                    UserInfo.objects.filter(id=3).delete()  # 删除单条数据
                    # UserInfo.objects.all().delete()  # 删除全部数据
                    # 3.获取数据
                    data_list = UserInfo.objects.all()  # return QuerySet 类型数据
                    for obj in data_list:
                        print(obj.id, obj.name, obj.password, obj.age)
                    row_obj = UserInfo.objects.filter(id=1).first()
                    print(row_obj.id, row_obj.name, row_obj.password, row_obj.age)
                    # 4.更新数据
                    UserInfo.objects.filter(id=1).update(age=30)
                    return HttpResponse("成功")
                

                urls.py:

                from django.urls import path
                from app01 import views
                urlpatterns = [
                    # path('admin/', admin.site.urls),
                    # ORM 测试
                    path('orm/', views.orm)
                ]
                

                3 扩展

                3.1 ERROR:2026, ‘SSL connection error: unknown error number’

                报错截图:

                Python Django 之连接 Mysql 数据库详解,在这里插入图片描述,第6张

                • 原因:较高版本的 mysql 的 ssl 是默认开启的
                • 解决:关闭 ssl,同下 5 个步骤

                  【第一步:登录 mysql,查看 ssl 开启情况】

                  C:\Users\Administrator>mysql -u root -p
                  Enter password: *****
                  mysql> show variables like '%ssl%';
                  

                  Python Django 之连接 Mysql 数据库详解,在这里插入图片描述,第7张

                  【第二步:修改 my.ini】

                  Python Django 之连接 Mysql 数据库详解,在这里插入图片描述,第8张

                  【第三步:重启 mysql 服务】

                  Python Django 之连接 Mysql 数据库详解,在这里插入图片描述,第9张

                  【第四步:重新执行命令】

                  Python Django 之连接 Mysql 数据库详解,在这里插入图片描述,第10张

                  【第五步:启动 DJango 项目】

                  Python Django 之连接 Mysql 数据库详解,在这里插入图片描述,第11张