在上面一篇文章里,介绍了安装Django的方法,这里说说连接数据库吧
这篇主要介绍踩的坑和解决办法
正常连接和初始化数据库的命令是
python manage.py migrate
执行这个命令的时候,出现了如下报错
django.core.exceptions.ImproperlyConfigured: settings.DATABASES is improperly configured. Please supply the ENGINE value. Check settings documentation for more details.
经过一段排查,是我配置数据库的时候,多嵌套了一层default,修改为如下即可
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'dbname',
'USER': 'root',
'PASSWORD': '****',
'HOST': '127.0.0.1',
'PORT': '3306',
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': BASE_DIR / 'db.sqlite3',
}
}
然后继续执行migrate时,会报如下错误
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?
本机环境是mac电脑,按官方教程操作的时候,发现安装mysqlclient的python包会依赖本机安装mysql或者mysql-client,但在装mysql和mysql-client的时候,发现一直报错。后面发现解决办法是,在settings.py文件里,加下如下代码,即改用pymsql连接即可。
import pymysql
pymysql.install_as_MySQLdb()
或者在settings.py同目录的__init__.py里加如上代码也可以
然后再执行python manage.py migrate命令会发现表顺利创建。新增表,不影响原有库的其他表。
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
本文暂时没有评论,来添加一个吧(●'◡'●)