Django models数据库配置以及多数据库联用设置
今天来说说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文件,然后进行如下编辑
- from django.conf import settings
- DATABASE_MAPPING = settings.DATABASE_APPS_MAPPING
- class DatabaseAppsRouter(object):
- """
- A router to control all database operations on models for different
- databases.
- In case an app is not set in settings.DATABASE_APPS_MAPPING, the router
- will fallback to the `default` database.
- Settings example:
- DATABASE_APPS_MAPPING = {'app1': 'db1', 'app2': 'db2'}
- """
- def db_for_read(self, model, **hints):
- """"Point all read operations to the specific database."""
- if model._meta.app_label in DATABASE_MAPPING:
- return DATABASE_MAPPING[model._meta.app_label]
- return None
- def db_for_write(self, model, **hints):
- """Point all write operations to the specific database."""
- if model._meta.app_label in DATABASE_MAPPING:
- return DATABASE_MAPPING[model._meta.app_label]
- return None
- def allow_relation(self, obj1, obj2, **hints):
- """Allow any relation between apps that use the same database."""
- db_obj1 = DATABASE_MAPPING.get(obj1._meta.app_label)
- db_obj2 = DATABASE_MAPPING.get(obj2._meta.app_label)
- if db_obj1 and db_obj2:
- if db_obj1 == db_obj2:
- return True
- else:
- return False
- return None
- def allow_syncdb(self, db, model):
- """Make sure that apps only appear in the related database."""
- if db in DATABASE_MAPPING.values():
- return DATABASE_MAPPING.get(model._meta.app_label) == db
- elif model._meta.app_label in DATABASE_MAPPING:
- return False
- return None
- def allow_migrate(self, db, app_label, model=None, **hints):
- """
- Make sure the auth app only appears in the 'auth_db'
- database.
- """
- if db in DATABASE_MAPPING.values():
- return DATABASE_MAPPING.get(app_label) == db
- elif app_label in DATABASE_MAPPING:
- return False
- return None
最后再在models.py里面指定我们的表运用的是哪个数据,继续拿我自己写的例子举例
最后通过CMD进入到你的Django目录,执行python manage.py makemigrations
然后再创建数据库yq,执行python manage.py migrate --database=yq(不如不写--database就是默认创建default里面的)
打开数据库查看,大功告成!创建的interface和interface2两张表都在里面,撒花!!!
Django models数据库配置以及多数据库联用设置的更多相关文章
- Django models数据库配置以及多数据库调用设置
今天来说说web框架Django怎么配置使用数据库,也就是传说中MVC(Model View Controller)中的M,Model(模型). 简单介绍一下Django中的MVC: 模型(model ...
- django数据库配置,即数据库分库分表
一 Django的数据库配置 (一)修改settings.py文件关于数据库的配置: Django默认使用sqlite: DATABASES = { 'default': { 'ENGINE': ...
- Mac MySQL 数据库配置(关系型数据库管理系统)
前言 MySQL 关系型数据库管理系统. 1.配置准备工作 1)配置数据库准备工作 下载相关软件 mysql-5.7.21-1-macos10.13-x86_64.dmg mysql-workbenc ...
- 【转载】解决django models文件修改后的数据库同步问题——south模块
转载链接:https://www.cnblogs.com/frchen/p/5732490.html 在使用django进行开发时,往往需要根据不同的需求对model进行更改.而这时候,python ...
- django models.py增加后MySQL数据库中并没有生成相应的表
根据教程到添加并保存quest的时候报错了 1.models.py里面的命名没有错 2.查看mysite->settiongs下的INSTALLED_APPS设置正确 3.使用python ma ...
- django mysql 数据库配置
在settings.py中保存了数据库的连接配置信息,Django默认初始配置使用sqlite数据库. DATABASES = { 'default': { 'ENGINE': 'django.db. ...
- 004.CI4框架CodeIgniter, 配置mysql数据库,并进行数据库查询
01.在app的Config目录的Database文件里面填写数据库配置,并把pConnect设置成true,此处为一直连接mysql数据库 02.在Models中,创建一个System目录,再在Sy ...
- CentOS7下Mysql5.7主从数据库配置
本文配置主从使用的操作系统是Centos7,数据库版本是mysql5.7. 准备好两台安装有mysql的机器(mysql安装教程链接) 主数据库配置 每个从数据库会使用一个MySQL账号来连接主数据库 ...
- Django: 之数据库导入、迁移和联用
Django 数据库导入 从网上下载的一些数据,excel表格,xml文件,txt文件等有时候我们想把它导入数据库,应该如何操作呢? 以下操作符合 Django版本为 1.6 ,兼顾 Django 1 ...
随机推荐
- Java利用内存映射文件实现按行读取文件
我们知道内存映射文件读取是各种读取方式中速度最快的,但是内存映射文件读取的API里没有提供按行读取的方法,需要自己实现.下面就是我利用内存映射文件实现按行读取文件的方法,如有错误之处请指出,或者有更好 ...
- [补档][Usaco2015 Jan]Grass Cownoisseur
[Usaco2015 Jan]Grass Cownoisseur 题目 给一个有向图,然后选一条路径起点终点都为1的路径出来,有一次机会可以沿某条边逆方向走,问最多有多少个点可以被经过? (一个点在路 ...
- 安装完jdk配置环境变量
(1)新建->变量名"JAVA_HOME",变量值"C:\Java\jdk1.8.0_05"(即JDK的安装路径) (2)编辑->变量名" ...
- InputStreamReader读取文件出现乱码
当你读取一个文本文件时,如果是在电脑记事本上面写的,然后保存.使用InputStreamReader读取出来,并且是按照他的编码格式读取出来,发现还是存在乱码,比如文本内容是“你好”,读出来显示是“? ...
- 特殊的ip地址
特殊IP地址 一.0.0.0.0 严格说来,0.0.0.0已经不是一个真正意义上的IP地址了.它表示的是这样一个集合:所有不清楚的主机和目的网络.这里的“不清楚”是指在本机的路由表里没有特定条目指明如 ...
- uiautomator +python 实现安卓自动化
很多人看到这个题目我相信他们可能会说,uiautomator不是java开发的吗?python怎么用呢,其实呢 ,一开始我也是这么想的,看了金阳光老师的视频,也是用java写的,我表示不服,我要科学上 ...
- H5滚动轮播插件
概述 JRedu 随着前端技术的发展,越来越多的H5技术被应用到实际开发中,尤其是js插件更是无处不用,本章节我们主要分享下如何去自己封装一个滚动轮播插件. 1效果图如下: 2主要功能 支持超 ...
- iOS 横竖屏切换解决方案
iOS要实现横竖屏切换很简单,不需要使用任何第三方,只需要实现几个方法就可以了. 1.设置系统支持横竖屏[General]->[Targets]-> [Deployment info]-& ...
- Maven干货
好处: 1. 依赖管理:对jar包统一管理 2. 项目构建: 项目编码完成后,对项目进行编译.测试.打包.部署.之前项目构建通过eclipse工具实现.今天学习新的工具也可以实现这些过程.比如:通过m ...
- sqlte3 的基本使用4
sqlite 的order by 语句是用来对数据进行升序降序排序的,asc 是升序,des 是降序 sqlite> select * from student; id name age --- ...