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

       应用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

你可能感兴趣的:(关于Django项目中创建MySQL数据库注意事项)