zoukankan      html  css  js  c++  java
  • Django:Python3.6.2+Django2.0配置MySQL

    持续学习Django中。。。

     

    Django默认使用的数据库是python自带的SQLlite3,但SQLlite并不适用于大型的项目,因此我将数据库换成了MySQL,下面介绍下Django如何配置数据库。。。

    我使用的版本是:Python3.6.2+Django2.0+MySQL5.7.21

    MySQL下载安装跳过,直接说配置过程:

    一、settings.py文件中修改数据库配置为下面的内容:

    # Database
    # https://docs.djangoproject.com/en/2.0/ref/settings/#databases
    
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': '127.0.0.1',
            'PORT': '3306',
            'NAME': 'mysql',
            'USER': 'root',
            'PASSWORD': 'zwg123456',
            'OPTIONS': {
                'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
                },
        }
    }

    配置信息从上到下依次是:

    驱动(ENGINE)、主机地址(HOST)、端口号(PORT)、数据库(NAME)、用户名(NAME)以及登录密码(PASSWORD);

    关于sql_mode的设置,可参考Django文档:https://docs.djangoproject.com/en/2.0/ref/databases/#setting-sql-mode

     

    二、在__init_.py文件添加如下配置:

    # coding=utf-8
    
    import pymysql
    pymysql.install_as_MySQLdb()

    __init_.py文件是一个空文件,因为Django连接MySQL时默认使用MySQLdb驱动,但MySQLdb不支持Python3,因此这里将MySQL驱动设置为pymysql。

     

    三、执行数据迁移

    由于Django默认使用的数据库为SQLlite,但现在重新配置了MySQL数据库,因此需要将原来的数据迁移过来。

    配置好上面的信息后,执行数据迁移,然后重启服务,就可以继续开发你的系统。

     

    四、可能遇到的问题

    1、报错:

    django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.3 or newer is required; you have 0.7.11.None

    MySQLclient目前只支持到python3.4,因此如果使用的更高版本的python,可以修改下面路径的文件:

    C:UsersdellAppDataLocalProgramsPythonPython36-32Libsite-packagesdjangodbackendsasease.py

    将下面的文件注释掉即可:

     if version < (1, 3, 3):

        raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % Database.__version__) 

    2、报错:

    site-packages/pymysql/cursors.py:166: Warning: (3135, "'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO'
    sql modes should be used with strict mode. They will be merged with strict mode in a future release.
    ") result = self._query(query) site-packages/pymysql/cursors.py:166: Warning: (3090, "Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.") result = self._query(query)

    根据提示,SQL modes应该使用安全模式,即该功能将可能在未来的版本中被舍弃或者合并,这是MySQL向后兼容常见的处理方式;

    解决方案:

    修改django中的配置文件settings.py文件,将数据库的配置里设置SQL_MODES的地方注释掉:

    # Database
    # https://docs.djangoproject.com/en/2.0/ref/settings/#databases
    
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': '127.0.0.1',
            'PORT': '3306',
            'NAME': 'mysql',
            'USER': 'root',
            'PASSWORD': 'zwg123456',
            # 'OPTIONS': {
                # 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
                # },
        }
    }

    然后重新运行即可!

    PS:如果配置后启动有报错,淡定,检查你修改的文件格式、缩进,检查文件路径,检查MySQL数据库是否成功安装。。。

  • 相关阅读:
    家庭网关
    linux -jdk 安装
    linux 常见命令--系统信息部分
    pyglet--EventLoop对象(主事件循环,用于从系统消息队列中取出消息,并派发给各个窗口)
    ATL com的dll文件与tlb文件
    MFC实现COM组件
    如何定义一个接口(接口Interface只在COM组件中定义了,MFC和C++都没有接口的概念)
    关于DLL调试的两个工具(dependency walker和dumpbin.exe)
    MFC工程名称与所包含文件名称的关系(工程名可以更改,输出的.dll.exe.lib都以最后工程名命名为准)
    关于c++中命名空间namespace
  • 原文地址:https://www.cnblogs.com/imyalost/p/8542181.html
Copyright © 2011-2022 走看看