应用Django Web框架开发应用时,MySQL是经常使用到的数据库之一,如何在Django应用中使用MySQL数据库,以及如何避免与解决使用过程中出现的一些问题,本文将一些异常解决方法整理如下,供可能遇到问题的各位同仁参考。
一、 基本条件
本文使用的Django版本为3.0版,python版本为3.8.3,MySQLworkbench为8.0。
二、 数据库设置
通过Pycharm创建项目之后,Pycharm会默认使用sqlite3数据库,并在settings.py文件完成初始设置,一般如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR,'db.sqlite3'),
}
}
如果希望在项目中使用MySQL数据库,则需要在settings.py文件完成如下设置(对上述设置进行修改):
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.MySQL',
'NAME': 'xxxxxxxx', #设置database NAME
'USER': 'xxxxxxxx', #设置为自己的用户名
'PASSWORD': '***********', #设置为自己的密码
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
三、 建立数据库
(一) 创建用户
打开MySQL workbench 8.0,在“Server”菜单下,点击“Users and Privileges”子菜单,在如下界面完成数据库用户创建:
(二) 创建数据库
在MySQL workbench 8.0中,第一点击 图标,创建schema(可以理解为数据库),然后在文本框中输入想要创建的数据名称,在本例为“imyblogs”,具体如下图所示:
(三) 设定数据库用户和密码
选中左侧导航栏下已经建立的数据库(imyblogs,字体为粗体时即为选中),在“Database”菜单选择“Connect to Database…”子菜单,在弹出页面中输入用户名称(本例中为riverboy),在Password栏点击“Store in Vault…”,在弹出的页面中输入用户密码(和settings.py文件中访问MySQL数据库相关设置保持一致),如下图:
最后点击“OK”按钮,完成设置。
对于这一步骤的理解:
通常,使用Pycharm完成Djiango应用项目创建时,默认使用的是sqlite3数据库,Pycharm自动会在项目所在根目录中生成了一个名为“db.sqlite3”的数据库文件,因此,不需要完成数据库文件创建,即可在Pycharm中通过命令行指令完成数据库结构生成及数据迁移相关的操作(“Python manage.py makemigrations”和“Python manage.py migrate”)。
但对于使用MySQL数据库而言,不完成上述“建立数据库”(此时不存数据文件或者对应数据存放空间),在Pycharm中通过命令行指令完成数据库结构生成及数据迁移相关的操作(“Python manage.py
makemigrations”和“Python manage.py migrate”)一定会产生数据操作异常,建立数据库,就相当于实现了Pycharm自动在项目所在根目录中生成了一个名为“db.sqlite3”的数据库文件一样的目的。
四、常见异常信息
在Django应用项目中,使用MySQL数据库时(此处特指完成“Python manage.py makemigrations”和“Python manage.py migrate”命令行操作),通常会出现以下两项异常错误:
1.django.db.utils.OperationalError:
(1045, "Access denied for user ‘xxxxxxxx ‘@‘localhost‘(using password: YES)")
2.django.db.utils.OperationalError:(1044, "Access denied for user 'xxxxxxxx'@'localhost' to database 'xxxxxxxx'")
严格按照上述操作,基本上可以保证避免或解决上述异常,完成“Python manage.py
makemigrations”和“Python manage.py migrate”两项操作,实现数据库结构创建。
转自个人博客:
https://www.solutionworks.cn/show-1.html
https://blog.csdn.net/mywindpursue