django 配置mysql流程以及运行报错的解决

550 阅读3分钟

「这是我参与2022首次更文挑战的第5天,活动详情查看:2022首次更文挑战」。

0 环境

  • 系统环境:window
  • 编辑器:IDEA
  • 开发语言:django3.1.1

1 配置数据库

进入settings.py文件,找到DATABASES, 在下面添加如下的数据,添加项如下:驱动名,数据库名(请核对好它,我之前就是因为它,排错了半天),填写数据库地址和端口,用户名和密码。标注下:正常情况下,DATABASES配好保存了,可以直接访问正常返回。但有时,填写DATABASES时,某些项可能填错了,肉眼会错过,建议最好将其copy到Navicat这类的数据库工具上,测试连接一下,么问题,在排查其他原因,若是报错了,说明某个项填写错误,在挨个排查找出真正元凶即可。

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

    }
}

配置明细

2 配置models

数据库默认为null,在填写表单的时候blank可以为空。下面定义了一个model,创建了titlelogo字段。title最大长度50,logo设置upload_to,上传路径。

from django.db import models

# Create your models here.
class SiteInfo(models.Model):
    title = models.CharField(null=True,blank=True,max_length=50)
    logo = models.ImageField(upload_to="logo/",null=True,blank=True)

    def __str__(self):
        return self.title

3 在admin中注册model

from django.contrib import admin
from .models import SiteInfo

admin.site.register(SiteInfo)

3 数据迁移报错

pymysql报错'mysqlclient 1.3.13 or newer is required'。

创建init.py文件,复制下面的代码粘贴到init.py文件里,保存即可。

import pymysql
pymysql.version_info=(1, 4, 2, "final", 0)
pymysql.install_as_MySQLdb()

init.py添加

3 执行迁移

# 适用于单个应用
python manage.py makemigrations
python manage.py migrate

执行成功

查看

数据库查看

4 启动项目

python manage.py runserver

5 访问admin

提示创建账号

进入项目根目录 创建超级管理员。

python manage.py createsuperuser

创建账号

再次登陆

修改密码 一些权限等

6 进入myblog

在这里插入图片描述

在这里插入图片描述

数据库插入成功

7 注意项

注意:没有myblog名 大概率没有添加admin.site.register(某个model)。 没有添加admin.site时

注意:有时会添加报错 没有遇到 直接略过 添加报错

1.根据报错定位,如图下: 报错

2.按照mvt的流程排查,比如model写的是否对,我就错在__str__。

3.检查是否迁移成功了,2、3不分先后(看情况)。

  • 若是迁移问题

旧文件删除,重新生成。

旧文件删除 重新生成用不到sqlite3 保险起见删了它

  • 在多应用的环境下 加需要迁移的某个应用名了。
python manage.py makemigrations myblog(指定应用名)
python manage.py migrate myblog(指定应用名)

8 小结

正常遇到的问题是mysql配置、models编写错误、或者没在admin注册这几块,其中mysql配置注意了,假如是新买的云服务器,一定要装好了mysql程序,配置好后,连接测试一下,没问题了,再去到settings.py里配置,有时候因为云服务器防火墙等问题,使你无法通过使用,还有重要两点,一定要保证你云服务器的安全组已经开通了和mysql相关的某些端口,没有请及时添加,还有一点,有重要的数据,请及时快照或本地同步备份,之前就是搞崩过,想想都心痛,删库3s的快乐,别体验。

小结