Python Django 之连接 Mysql 数据库详解

文章目录

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

1 概述

1.1 Mysql 下载和安装

1.2 菜单目录

  • 主要使用的文件如图

2 ORM 框架

2.1 连接 Mysql 模块:mysqlclient

python 复制代码
> pip install mysqlclient

2.2 创建数据库

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

2.3 连接 Mysql

settings.py 中,配置 Oracle 的连接串

python 复制代码
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 创建表

注意:

① 该类可重复执行

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

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

settings.py 中:

python 复制代码
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 中:

python 复制代码
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 复制代码
> python manage.py makemigrations
> python manage.py migrate

可选,创建管理员

python manage.py createsuperuser

查询表:

sql 复制代码
mysql> use demo;
mysql> desc app01_userinfo;

2.5 增删改查

views.py

python 复制代码
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

python 复制代码
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'

报错截图:

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

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

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

【第二步:修改 my.ini】

【第三步:重启 mysql 服务】

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

【第五步:启动 DJango 项目】

相关推荐
iFeng的小屋7 分钟前
【2026年新版】Python根据小红书关键词爬取所有笔记数据
笔记·爬虫·python
m0_561359679 分钟前
使用Python处理计算机图形学(PIL/Pillow)
jvm·数据库·python
LeonDL1689 分钟前
基于YOLO11深度学习的衣物识别系统【Python源码+Pyqt5界面+数据集+安装使用教程+训练代码】【附下载链接】
人工智能·python·pyqt5·yolo数据集·yolo11数据集·yolo11深度学习·衣物识别系统
山岚的运维笔记13 分钟前
SQL Server笔记 -- 第14章:CASE语句
数据库·笔记·sql·microsoft·sqlserver
傻啦嘿哟18 分钟前
Python操作PDF页面详解:删除指定页的完整方案
开发语言·python·pdf
Data_Journal18 分钟前
如何使用 Python 解析 JSON 数据
大数据·开发语言·前端·数据库·人工智能·php
serve the people21 分钟前
python环境搭建 (十三) tenacity重试库
服务器·python·php
ASS-ASH21 分钟前
AI时代之向量数据库概览
数据库·人工智能·python·llm·embedding·向量数据库·vlm
xixixi777771 小时前
互联网和数据分析中的核心指标 DAU (日活跃用户数)
大数据·网络·数据库·数据·dau·mau·留存率
乔江seven1 小时前
【Flask 进阶】3 从同步到异步:基于 Redis 任务队列解决 API 高并发与长耗时任务阻塞
redis·python·flask