如何使用Django调用 MySQL 数据库

如何使用Django调用 MySQL 数据库

Pycharm 中的 Django 项目安装 MySQL 主要是

  1. 安装 mysqlclient
  2. 使用 Django 配置 MySQL 数据库

本流程适用于 ARM MacOS Monterey 12.2。

目录

  • Django 调用 MySQL 数据库
    • 1. 新建需要用到的新的数据库
    • 2. 安装 Python 访问 MySQL 的模块 mysqlclient
    • 3. 在 Django 中设置 settings.py 文件连接 mysql 数据库
    • 4. 再编辑APP中的 models.py 文件
    • 5. 配置好数据库后,执行迁移操作
    • 6. 修改 views.py 中的业务逻辑
    • 7. 如果需要访问不同主机的mysql服务器

1. 新建需要用到的新的数据库

打开终端,进入数据库 mysql -u root -p再新建数据库。

CREATE DATABASE mysite CHARACTER SET utf8; # 设置数据库编码方式为utf8

2. 安装 Python 访问 MySQL 的模块 mysqlclient

mysqlclient 安装直接在 pycharm 偏好 > python 解释器 中添加包进行安装。

使用 pip 安装 和 conda 安装 都容易出奇奇怪怪的问题。

![image-20220325103720876](Pycharm 安装 MySQL 8.0.assets/image-20220325103720876.png)

用官网方法一的 brew安装,要先 brew install mysql

我不知道在这个虚拟环境中 install mysql 是不是二次安装了 mysql

,想要在后面搞懂这个,在 pycharm 虚拟 终端中安装的数据库会去了哪儿。

3. 在 Django 中设置 settings.py 文件连接 mysql 数据库

DATABASES = {
  'default': {
    'ENGINE': 'django.db.backends.mysql',  #数据库引擎
    'NAME':  'mysite',  #之前创建的数据库名
    'USER':  'root', #用户名
    'PASSWORD':  '****' #密码
    'HOST':  '' #不填写默认是localhost
    'PORT':  '3306' #MySQL默认端口
 }
}

4. 再编辑APP中的 models.py 文件

class UserInfo(models.Model):
# models.Model 是固定写法,要继承这个类
  user = models.CharField(max_length=32)
  pwd = models.CharField(max_length=32)
 # 创建了两个字段,最大长度32,类型是char

5. 配置好数据库后,执行迁移操作

在 pycharm 终端中执行两个操作:

python manage.py makemigrations
python manage.py migrate

使用第二个操作时,可能会报错,是由于目前最新的 mysql8.0数据库对用户密码的加密方式为 caching_sha2_password, django暂时还不支持这种加密方式。所以只需将加密方式改为老版的即可。

https://blog.csdn.net/weixin_43996007/article/details/104065678

6. 修改 views.py 中的业务逻辑

from django.shortcuts import render
from login import models  # 导入models文件

# Create your views here.


def index(request):

    if request.method == 'POST':
        username = request.POST.get('username') # 括号内对应于login.html中用户名输入处的name属性
        password = request.POST.get('password') # 括号内对应于login.html中用户名输入处的name属性
        # 将数据保存到数据库
        models.UserInfo.objects.create(user=username, pwd=password)

    # 从数据库中读取所有数据,注意缩进
    user_list = models.UserInfo.objects.all()
    return render(request, 'index.html', {'data': user_list})

原创文章,作者:Rosmontis,如若转载,请注明出处:https://rosmontis.com/archives/192

(1)
Rosmontis的头像Rosmontis
Django—数据导出工具django-import-export使用教程
上一篇 2022年5月6日 下午6:44
Django—使用PyJWT模块实现Token认证
下一篇 2022年5月6日 下午10:19

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注