Django文档 Settings / Core Settings / DATABASES 一节阐述了django与数据库交互配置的内容。
先在 MySQL 5.7 版本数据库中创建一个名为 learning_log_db 的数据库,和名为 myuser 的用户,并分配权限。
create databases learning_log_db;
create user 'myuser' identified by '1qaz@WSX';
grant all on learning_log_db.* to 'myuser'@'%' with grant option;
再在工程目录下settings.py文件里面有关于数据库的配置信息。django要求必须有一个名为 default 的默认数据库配置,这个默认配置可以是空的,可以配置多个数据库。
vim learning_log/settings.py
DATABASES = {
'default': { # default可以空但不能没有
},
'learning_log': { # 数据配置的名字
'ENGINE': 'django.db.backends.mysql', # 连接数据库引擎
'NAME': 'learning_log_db', # mysql数据库名
'USER': 'myuser', # mysql数据库用户
'PASSWORD': '1qaz@WSX', # mysql数据库用户密码
'HOST': '127.0.0.1', # mysql数据库IP地址
'PORT': '3306', # mysql数据库端口
},
}
为了避免 mysqlclient 模块在 python3 支持不好的情况,直接安装 pymysql 模块。并修改项目目录下 __init__.py 文件。
vim learning_log/__init__.py
import pymysql
pymysql.install_as_MySQLdb()
执行 python manage.py migrate --database='learning_log'
python manage.py migrate --database='learning_log'
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
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
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying auth.0012_alter_user_first_name_max_length... OK
Applying sessions.0001_initial... OK