关于Django项目中创建MySQL数据库注意事项

关于Django项目中创建MySQL数据库注意事项

应用Django Web框架开发应用时,MySQL是经常使用到的数据库之一,如何在Django应用中使用MySQL数据库,以及如何避免与解决使用过程中出现的一些问题,本文将一些异常解决方法整理如下,供可能遇到问题的各位同仁参考。

一、  基本条件

本文使用的Django版本为3.0版,python版本为3.8.3,MySQL workbench为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”子菜单,在如下界面完成数据库用户创建:

image.png

(二)     创建数据库

在MySQL workbench 8.0中,第一点击   图标,创建schema(可以理解为数据库),然后在文本框中输入想要创建的数据名称,在本例为“imyblogs”,具体如下图所示:

image.png

(三)     设定数据库用户和密码

选中左侧导航栏下已经建立的数据库(imyblogs,字体为粗体时即为选中),在“Database”菜单选择“Connect to Database”子菜单,在弹出页面中输入用户名称(本例中为riverboy),在Password栏点击“Store in Vault”,在弹出的页面中输入用户密码(和settings.py文件中访问MySQL数据库相关设置保持一致),如下图:

image.png

最后点击“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”两项操作,实现数据库结构创建。


上一篇: 没有了