设置Mysql驱动

首先进入自己的 Project/projectname/init.py文件中

  1. import pymysql
  2. pymysql.version_info = (1, 4, 6, "final", 0) # 1, 4, 6为你的mysql驱动版本,若报错修改一下对应的数字位置就好了
  3. pymysql.install_as_MySQLdb()

设置MySql数据路由

在Project/projectname/下新建database_route.py

  1. from django.conf import settings
  2. # 获取settings中的DATABSE_APPS_MAPPING,后面会写
  3. DATABASE_MAPPING = settings.DATABASE_APPS_MAPPING
  4. # 设置读写数据时正确读写对应的数据库
  5. class DatabaseAppsRouter(object):
  6. def db_for_read(self, model, **hints):
  7. app_label = model._meta.app_label
  8. if app_label in DATABASE_MAPPING:
  9. return DATABASE_MAPPING[app_label]
  10. return None
  11. def db_for_write(self, model, **hints):
  12. app_label = model._meta.app_label
  13. if app_label in DATABASE_MAPPING:
  14. return DATABASE_MAPPING[app_label]
  15. return None

设置settings中的Mysql数据库

设置默认数据库

  1. DATABASES = {
  2. 'default': {
  3. 'ENGINE': 'django.db.backends.mysql', # mysql引擎
  4. 'NAME': 'database_name', # 数据库名
  5. 'USER': 'root', # 数据库登录名
  6. 'PASSWORD': '123456', # 数据库登录密码
  7. 'HOST': '127.0.0.1', # 数据库所在服务器ip地址
  8. 'PORT': '3306', # 监听端口 默认3306即可
  9. }
  10. }
  11. # 首先必须先设置一个default数据库,做为默认的数据库如果你是从一开始看到这没有执行过其他步骤的话,
  12. # 设置完默认的数据库后,你可以在终端执行 python3 manage.py migrate 此时就会在该数据库内生成django默认的一些表

配置项目中其他数据库

开发项目时不可能只用到一个数据库,并且全部写在database中其实也不便拓展(个人认为)以下为我目前的写法

  1. mulit_databases = {
  2. 'api.dev.users': { # api.dev
  3. 'ENGINE': 'django.db.backends.mysql',
  4. 'NAME': 'user', # 新建数据库名
  5. 'USER': 'root', # 数据库登录名
  6. 'PASSWORD': '123456', # 数据库登录密码
  7. 'HOST': '127.0.0.1', # 数据库所在服务器ip地址
  8. 'PORT': '3306', # 监听端口 默认3306即可
  9. }
  10. }
  11. # 接下来要将mulit_databases注册到databases中
  12. DATABASES.update(mulit_databases)
  13. # 指定Mysql进行读写时的路由(上方写的设置MySql数据路由)
  14. DATABASE_ROUTERS = ['projectname.database_router.DatabaseAppsRouter']
  15. DATABASE_APPS_MAPPING = {
  16. # Example:
  17. # 'app_name': 'database_name', # app_name对应在你创建自己的数据模型时 class Meta中app_label
  18. "user": 'api.dev.users'
  19. }