Django连接mysql

最近在windwos 10环境中搭建Django开发环境,用的是Mysql数据库,发现使用最新版本的mysql 8.0 Django在连接时会报错。
具体报错为:

django.db.utils.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: NO)")

如果报using password: YES可以尝试修改密码, 但using password: NO而且配置正确,目前个人无法解决这个问题,把mysql版本降到5.7.22后一切正常。
下载地址:msi安装包点下面页面。
https://dev.mysql.com/downloads/mysql/5.7.html#downloads

连接过程:

1、创建django工程

django-admin startproject mysite

2、创建APP

cd mysite
python manage.py startapp netnpm

3、安装mysql并创建数据库(建意使用5.x版本)

CREATE  DATABASE  netnpm CHARACTER SET UTF8;
flush privileges;

4、修改models.py,建立自己的模型

from django.db import models
class Devices(models.Model):
    Dev_name = models.CharField(max_length=30)
    Dev_manu = models.CharField(max_length=20)
    Dev_type = models.CharField(max_length=20)
    Dev_sn= models.CharField(max_length=20)
    Mgt_ip = models.CharField(max_length=30)
    Generator = models.CharField(max_length=30)
    Cabinet = models.CharField(max_length=10)
    Production_date= models.DateTimeField()
    Online_date= models.DateTimeField(auto_now_add=True)
    His_conf=models.TextField()
    Curr_conf=models.TextField()

5、修改settings.py

#增加应用
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'netnpm'
]
修改DB设置
DATABASES = {
    # 'default': {
    #     'ENGINE': 'django.db.backends.sqlite3',
    #     'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    # }
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # or mysql.connector.django
        'NAME': 'netnpm',
        'USER': 'root',
        'PASSWORD': '123456',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

6、安装pymysql,mysqlclient

pip install pymysql
pip install mysqlclient

7|、修改APP下的init.py新增以下内容

import pymysql
pymysql.install_as_MySQLdb()

8、同步DB

python manage.py sqlmigrate
python manage.py migrate

你可能感兴趣的:(Django连接mysql)