请求设置DATABASES,但我的Django项目中没有配置设置错误

时间:2017-09-10 23:40:25

标签: mysql django python-3.x sqlite

我正在尝试将我的django项目中的数据库设置从sqlite3更改为mysql。

我在settings.py文件中编辑了数据库对象:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'Identity',
        'USER' : 'root',
        'PASSWORD': ''
    }
}

我运行django-admin dbshel​​l并收到此错误:

  

文件   “/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/conf/init.py”   第39行,在_setup       %(desc,ENVIRONMENT_VARIABLE))django.core.exceptions.ImproperlyConfigured:请求的设置   DATABASES,但未配置设置。您必须定义   环境变量DJANGO_SETTINGS_MODULE或致电   在访问设置之前进行settings.configure()。

我按照此answer to use settings.configure()

的说明进行操作
from django.conf import settings
settings.configure()

它返回了此消息:

  

Traceback(最近一次调用最后一次):文件“”,第1行,in      文件   “/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/conf/init.py”   第63行,在配置中       引发RuntimeError('Settings already configured。')RuntimeError:已配置的设置。

当我运行python3 manage.py shell时,它给了我这个错误:

  

文件   “/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/backends/mysql/base.py”   第28行,在       raise ImproperlyConfigured(“加载MySQLdb模块时出错:%s”%e)django.core.exceptions.ImproperlyConfigured:加载MySQLdb时出错   module:没有名为'MySQLdb'的模块

我想要做的就是使用mySql而不是sqlite db。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

似乎缺少 MySQLdb 包, 你能检查一下这个软件包的安装吗?

  

apt-get install mysql-server

     

apt-get install mysql-client

     

apt-get install libmysqlclient-dev

在您的虚拟环境中,符合安装的mysql客户端

  

pip install mysqlclient

然后在 settings.py

中执行mysql配置
   DATABASES = {
      'default': {
      'ENGINE': 'django.db.backends.mysql',
      'NAME': 'test_db',#database name
      'HOST': '127.0.0.1',#
      'PORT': '3306',#mysql port
      'USER': 'root',#mysql username
      'PASSWORD': 'test123',#mysql password
       'OPTIONS': {
        'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
        'charset': 'utf8mb4',
         }
     }
  }