今天来说说web框架Django怎么配置使用数据库,也就是传说中MVC(Model View Controller)中的M,Model(模型)。

简单介绍一下Django中的MVC:

模型(model):定义你的数据库,一般都在models.py文件中。

视图(view):定义你的HTML等静态网页文件相关,也就是那些html、css、js等前端的东西。

控制器(controller):定义你的业务逻辑相关,就是你的主要代码。

正文开始

首先要在你的Django项目中找到两个文件:setting.py、models.py

然后保证你的app要注册到setting里面哟

找到DATABASES处,该处就是配置数据库的地方,然后进行设置:

首先如果是才创建的项目,那么你的DATABASES应该是长这样的:

Django源生默认使用的自带数据库sqlite3。如果你要使用自带的,那你可以完全不用动这里的设置,如果你要使用其他的数据库,更改ENGINE的值即可,比如mysql:django.db.backends.mysql

当我们使用其他数据库时,必须对其他参数进行设置,不然Django可能连不上你指定的数据库,我这里拿mysql来举例

可以看到,多了一些参数,NAME就是你要使用的数据库名字(实现要创建好,不然Django找不到),USER就是数据库登陆账号,然后依次是密码,IP,端口。

到这里setting应该就算是配置完成了,接着打开models.py,进行编辑

最后通过CMD进入到你的Django目录,执行python manage.py makemigrations

再执行python manage.py migrate

成功ok!撒花

如果要进行多数据库配置,研究了一番,终于搞通了,确实要复杂一些。不过也不是很复杂,多了两三个步骤,下面我们一个一个步骤来

首先只需要在DATABASE下继续添加一个字典即可,例如我添加了一个yq,里面写清楚了我这个yq要引用的数据库

然后就是添加路由器DATABASE_ROUTERS和映射DATABASE_APPS_MAPPING

看到了DATABASE_ROUTERS = ['Yq_Djago.database_router.DatabaseAppsRouter']吗,这个就是路由器的地址,意思是用Yq_Djago项目中的database_router文件里面的DatabaseAppsRouter方法

所以我们现在要去这个路径下创建一个database_router.py文件,然后进行如下编辑

  1. from django.conf import settings
  2.  
  3. DATABASE_MAPPING = settings.DATABASE_APPS_MAPPING
  4.  
  5. class DatabaseAppsRouter(object):
  6. """
  7. A router to control all database operations on models for different
  8. databases.
  9.  
  10. In case an app is not set in settings.DATABASE_APPS_MAPPING, the router
  11. will fallback to the `default` database.
  12.  
  13. Settings example:
  14.  
  15. DATABASE_APPS_MAPPING = {'app1': 'db1', 'app2': 'db2'}
  16. """
  17.  
  18. def db_for_read(self, model, **hints):
  19. """"Point all read operations to the specific database."""
  20. if model._meta.app_label in DATABASE_MAPPING:
  21. return DATABASE_MAPPING[model._meta.app_label]
  22. return None
  23.  
  24. def db_for_write(self, model, **hints):
  25. """Point all write operations to the specific database."""
  26. if model._meta.app_label in DATABASE_MAPPING:
  27. return DATABASE_MAPPING[model._meta.app_label]
  28. return None
  29.  
  30. def allow_relation(self, obj1, obj2, **hints):
  31. """Allow any relation between apps that use the same database."""
  32. db_obj1 = DATABASE_MAPPING.get(obj1._meta.app_label)
  33. db_obj2 = DATABASE_MAPPING.get(obj2._meta.app_label)
  34. if db_obj1 and db_obj2:
  35. if db_obj1 == db_obj2:
  36. return True
  37. else:
  38. return False
  39. return None
  40.  
  41. def allow_syncdb(self, db, model):
  42. """Make sure that apps only appear in the related database."""
  43.  
  44. if db in DATABASE_MAPPING.values():
  45. return DATABASE_MAPPING.get(model._meta.app_label) == db
  46. elif model._meta.app_label in DATABASE_MAPPING:
  47. return False
  48. return None
  49.  
  50. def allow_migrate(self, db, app_label, model=None, **hints):
  51. """
  52. Make sure the auth app only appears in the 'auth_db'
  53. database.
  54. """
  55. if db in DATABASE_MAPPING.values():
  56. return DATABASE_MAPPING.get(app_label) == db
  57. elif app_label in DATABASE_MAPPING:
  58. return False
  59. return None

最后再在models.py里面指定我们的表运用的是哪个数据,继续拿我自己写的例子举例

最后通过CMD进入到你的Django目录,执行python manage.py makemigrations

然后再创建数据库yq,执行python manage.py migrate --database=yq(不如不写--database就是默认创建default里面的)

打开数据库查看,大功告成!创建的interface和interface2两张表都在里面,撒花!!!

Django models数据库配置以及多数据库调用设置的更多相关文章

  1. Django models数据库配置以及多数据库联用设置

    今天来说说web框架Django怎么配置使用数据库,也就是传说中MVC(Model View Controller)中的M,Model(模型). 简单介绍一下Django中的MVC: 模型(model ...

  2. django数据库配置,即数据库分库分表

    一 Django的数据库配置 (一)修改settings.py文件关于数据库的配置: Django默认使用sqlite:   DATABASES = { 'default': { 'ENGINE': ...

  3. Mac MySQL 数据库配置(关系型数据库管理系统)

    前言 MySQL 关系型数据库管理系统. 1.配置准备工作 1)配置数据库准备工作 下载相关软件 mysql-5.7.21-1-macos10.13-x86_64.dmg mysql-workbenc ...

  4. 【转载】解决django models文件修改后的数据库同步问题——south模块

    转载链接:https://www.cnblogs.com/frchen/p/5732490.html 在使用django进行开发时,往往需要根据不同的需求对model进行更改.而这时候,python ...

  5. django models.py增加后MySQL数据库中并没有生成相应的表

    根据教程到添加并保存quest的时候报错了 1.models.py里面的命名没有错 2.查看mysite->settiongs下的INSTALLED_APPS设置正确 3.使用python ma ...

  6. django mysql 数据库配置

    在settings.py中保存了数据库的连接配置信息,Django默认初始配置使用sqlite数据库. DATABASES = { 'default': { 'ENGINE': 'django.db. ...

  7. 004.CI4框架CodeIgniter, 配置mysql数据库,并进行数据库查询

    01.在app的Config目录的Database文件里面填写数据库配置,并把pConnect设置成true,此处为一直连接mysql数据库 02.在Models中,创建一个System目录,再在Sy ...

  8. CentOS7下Mysql5.7主从数据库配置

    本文配置主从使用的操作系统是Centos7,数据库版本是mysql5.7. 准备好两台安装有mysql的机器(mysql安装教程链接) 主数据库配置 每个从数据库会使用一个MySQL账号来连接主数据库 ...

  9. 第一个Django应用 - 第二部分:Django数据库配置,模型和后台

    汇总操作 注:polls为应用名 1.执行命令:python manage.py migrate,生成默认的数据库表等 2.修改应用的models.py文件,添加数据库表模型等 3.INSTALLED ...

随机推荐

  1. BAT&注册表重定向劫持

    RunJS 常用引导,有时启动某个应用需要环境变量可以这样启动应用,会对启动的进程生效,即被继承 set PATH=D:\Developer\sdk\platform-tools;%PATH% D: ...

  2. android studio 非法字符: '\ufeff' 解决方式

    今天发现一个问题,就是从其它地方拷贝的代码到AS项目里面,木有语法 错误,可是就是执行不起来,老是报错"非法字符: '\ufeff' ",郁闷非常久.木有看到这个字符.最后查询了这 ...

  3. 从.Net版本演变看String和StringBuilder性能之争

    在C#中string关键字的映射实际上指向.NET基类System.String.System.String是一个功能非常强大且用途非常广泛的基类,所以我们在用C#string的时候实际就是在用.NE ...

  4. eclipse通过maven建立java se工程配置log4j,打包成zip,将jar包和配置文件分开,并以bat和sh文件启动java程序

    一.新建maven的java工程 1.eclipse里file-new-other,选择maven Project 2.选中 Use default Workspace location,然后 nex ...

  5. Scaling with Microservices and Vertical Decomposition

    Scaling with Microservices and Vertical Decomposition – dev.otto.de https://dev.otto.de/2014/07/29/s ...

  6. Mac开发必备工具(三)—— Fish shell

    Fish shell 简介 fish 可以根据输入自动匹配历史命令.它的一大特点是开箱即用,没有zsh那些繁琐的配置.官网:http://www.fishshell.com/. 安装与配置 在终端里使 ...

  7. I2S

    音频数据传输而制定: Inter—IC Sound : 单线 时钟和数据一条线,时分复用: 标准的I2S总线电缆是由3根串行导线组成的:1根是时分多路复用(简称TDM)数据线:1根是字选择线:1根是时 ...

  8. poj 2531 Network Saboteur 解题报告

    题目链接:http://poj.org/problem?id=2531 题目意思:将 n 个点分成两个部分A和B(也就是两个子集啦), 使得子集和最大(一定很难理解吧,呵呵).举个例子吧,对于样例,最 ...

  9. nginx网站日志配置

    用yum安装的nginx的日志默认安装在路径:/var/log/nginx nginx配置文件:/etc/nginx/nginx.conf (总配置文件)/etc/nginx/conf.d/defau ...

  10. UVA-10827(前缀和降维)

    题意: 给一个n*n的正方形,第一行和最后一行粘在一块,第一列和最后一列粘在一块,求这个环面上的最大的子矩形; 思路: 直接暴力是O(n^6)的复杂度,可以把前缀和求出来,这样就可以只用枚举四条边界就 ...