Django 连接 MySQL

199 阅读1分钟

Django 和 MySQL之间建立连接

Django和sqlite3的默认连接

settings.py 文件里可以查看到

DATABASES = {  
'default': {  
'ENGINE': 'django.db.backends.sqlite3',  
'NAME': BASE_DIR / 'db.sqlite3',  
}  
}

下一步:

之前的代码可以直接注释掉

DATABASES = {  
'default': {  
'ENGINE': 'django.db.backends.mysql', #sqlite3要改成mysql 
'NAME': 'Django', # 选择数据库里的库  
'HOST': '127.0.0.1', # 本机  
'PORT': 3306, # 端口  
'USER': 'root', # 用户名  
'PASSWORD': '******' # 自己的密码  
'CHARSET' : 'UTF-8'
}  
}

更改后如果直接执行,会遇到报错:

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?

这个的意思是没有MySQLdb模块,加载错误。

下一步

在Pycharm的setting设置里面找到Python Interpretor安装pymysql 安装好了后,回到Django的 init.py 初始化文件里面导入这个pymysql这个模块 import pymysql

import pymysql  
pymysql.install_as_MySQLdb() #猴子补丁

解决

80%的会报这个错误,另外的错误可能是因为解释器版本原因。

当然,在更改底层的时候,我们可以选择mysqlclient也可以选择pymysql。本次我们先用pymysql解决,mysqlclient是一样的道理。

这个问题解决后,我们再次尝试启动,就没有问题啦。

Performing system checks...

System check identified no issues (0 silenced).
Watching for file changes with StatReloader

You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
July 27, 2023 - 10:39:55
Django version 3.2.20, using settings 'Demo_Django.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.