Django提示mysql版本过低:django.db.utils.NotSupportedError: MySQL 8 or later is required (found 5.7.26).
因为mysql5.7及以下是免费的数据库,8.0之后是收费的。使用免费的数据库更放心,使用上没有什么区别。这个提示只是Django的版本检测提示,把它注释掉就好了。
全局搜索函数:
check_database_version_supported()
文件路径是:
D:\Python\web_project\dj01\venv\Lib\site-packages\django\db\backends\base\base.py
找到第二个,就是就是使用的那个,把它注释了:
def init_connection_state(self): """Initialize the database connection settings.""" global RAN_DB_VERSION_CHECK if self.alias not in RAN_DB_VERSION_CHECK: # self.check_database_version_supported() RAN_DB_VERSION_CHECK.add(self.alias)
先执行生成数据库迁移文件命令:
python .\manage.py makemigrations
然后写好数据实体类:
from django.db import models # Create your models here. """轮播图模型""" class Banner(models.Model): # 模型字段 image_url = models.CharField(max_length=255, verbose_name="广告图片") link = models.CharField(max_length=500, verbose_name="广告链接") remark = models.TextField(verbose_name="备注") is_show = models.BooleanField(verbose_name="是否显示", default=False) orders = models.IntegerField(default=1, verbose_name="排序") title = models.CharField(max_length=500, verbose_name="广告标题") image = models.ImageField(upload_to="banner", verbose_name="轮播图", null=True, blank=True) is_delete = models.BooleanField(verbose_name="逻辑删除", default=False) # 表信息 class Meta: db_table = "dj_banner" verbose_name = "轮播广告" verbose_name_plural = verbose_name # 自定义显示字段 def __str__(self): return self.title
设置好数据库连接配置:
settings/dev.py
DATABASES = { # 'default': { # 'ENGINE': 'django.db.backends.sqlite3', # 'NAME': BASE_DIR / 'db.sqlite3', # }, 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'dj01', 'HOST': '127.0.0.1', 'PORT': 3306, 'USER': 'root', 'PASSWORD': 'root', }, }
最后就是迁移到数据库中,执行命令:
python .\manage.py migrate
数据库中就有了Django自带的表和创建了实体类的表了:
上一篇:MySQL--事务详述