Django笔记二十二之多数据库操作
本文首发于公众号:Hunter后端
原文链接:Django笔记二十二之多数据库操作
这一篇笔记介绍一下多数据库操作。
在第十篇笔记的时候,简单介绍过 using() 的使用方法,多个数据库就是通过 using(db_alias) 的方式来来指定选中的数据库,这里介绍一下同步库表结构时候的操作。
- 定义方式
- 同步命令
- 指定数据库操作
1、定义方式
在 settings.py 的 DATABASES 变量中可以定义多个数据库,如果是多个数据库,示例如下:
DATABASES = {
'default': {
'NAME': 'app_data',
'ENGINE': 'django.db.backends.postgresql',
'USER': 'postgres_user',
'PASSWORD': 's3krit'
},
'users': {
'NAME': 'user_data',
'ENGINE': 'django.db.backends.mysql',
'USER': 'mysql_user',
'PASSWORD': 'superS3cret'
},
'customers': {
'NAME': 'customer_data',
'ENGINE': 'django.db.backends.mysql',
'USER': 'mysql_cust',
'PASSWORD': 'veryPriv@ate'
}
}
通过 DATABASES 的 key 定义不同数据库的名称,使用的时候就可以根据这几个 key 来连接访问。
2、同步命令
之前介绍过 migrate 的相关命令,比如:
python3 manage.py migrate
之前的这种操作是因为系统都是使用的默认的数据库,也就是 default,如果是需要对其他数据库进行相关 migrate 的操作,需要通过 --database=db_alias 的命令来指定数据库。
比如需要对 users 数据库进行表结构的操作,命令如下:
python3 manage.py migrate --database=users
当然,如果我们使用的还是 default 数据库,那么加不加 --database 参数都可以。
3、指定数据库操作
对于数据库的操作,比如说获取 Blog 这个 model 的所有数据,如果是 default 数据库,那么命令则是:
Blog.objects.all()
而如果这个 model 是指定的其他数据库,比如 users,那么使用前需要通过 using(db_alias) 来指定:
db_alias = "users"
Blog.objects.using(db_alias).all()
以及一些其他的操作:
blog = Blog.objects.using(db_alias).get(id=1)
Blog.objects.using(db_alias).filter(id=1).delete()
# 下面的是新建的保存操作:
obj.save(using=db_alias)
以上就是本篇笔记的全部内容,下一篇将介绍如何使用 model 的条件表达式的搜索,更新等操作。
如果想获取更多后端相关文章,可扫码关注阅读:

Django笔记二十二之多数据库操作的更多相关文章
- 二十、CI框架数据库操作之查看生产的sql语句
一.代码如下: 二.我们访问一下: 三.我们对比一下数据库内容 不忘初心,如果您认为这篇文章有价值,认同作者的付出,可以微信二维码打赏任意金额给作者(微信号:382477247)哦,谢谢.
- VSTO 学习笔记(十二)自定义公式与Ribbon
原文:VSTO 学习笔记(十二)自定义公式与Ribbon 这几天工作中在开发一个Excel插件,包含自定义公式,根据条件从数据库中查询结果.这次我们来做一个简单的测试,达到类似的目的. 即在Excel ...
- Android群英传笔记——第十二章:Android5.X 新特性详解,Material Design UI的新体验
Android群英传笔记--第十二章:Android5.X 新特性详解,Material Design UI的新体验 第十一章为什么不写,因为我很早之前就已经写过了,有需要的可以去看 Android高 ...
- 深度学习课程笔记(十二) Matrix Capsule
深度学习课程笔记(十二) Matrix Capsule with EM Routing 2018-02-02 21:21:09 Paper: https://openreview.net/pdf ...
- python3.4学习笔记(二十二) python 在字符串里面插入指定分割符,将list中的字符转为数字
python3.4学习笔记(二十二) python 在字符串里面插入指定分割符,将list中的字符转为数字在字符串里面插入指定分割符的方法,先把字符串变成list然后用join方法变成字符串str=' ...
- OllyDbg 使用笔记 (十二)
OllyDbg 使用笔记 (十二) 參考 书:<加密与解密> 视频:小甲鱼 解密系列 视频 演示样例程序下载地址:http://pan.baidu.com/s/1eQiV6aI 安装好程序 ...
- 汇编入门学习笔记 (十二)—— int指令、port
疯狂的暑假学习之 汇编入门学习笔记 (十二)-- int指令.port 參考: <汇编语言> 王爽 第13.14章 一.int指令 1. int指令引发的中断 int n指令,相当于引 ...
- 学习笔记:CentOS7学习之二十二: 结构化命令case和for、while循环
目录 学习笔记:CentOS7学习之二十二: 结构化命令case和for.while循环 22.1 流程控制语句:case 22.2 循环语句 22.1.2 for-do-done 22.3 whil ...
- (C/C++学习笔记) 二十二. 标准模板库
二十二. 标准模板库 ● STL基本介绍 标准模板库(STL, standard template library): C++提供的大量的函数模板(通用算法)和类模板. ※ 为什么我们一般不需要自己写 ...
- SQL注入之Sqli-labs系列第二十一关(基于复杂性的cookie POST报错注入)和二十二关(基于双引号的cookie POST报错注入)
开始挑战第二十一关(Cookie Injection- Error Based- complex - string) 和二十二关(Cookie Injection- Error Based- Doub ...
随机推荐
- pytorch基础 自动求导
1.把pytorch当成是numpy来用就行 2. 一个典型的张量是这样定义的. import pytorch as tt n=tt.tensor([1,2,3],dtype=True,requirg ...
- 【相邻父元素选择器】为啥p元素里面的h3也被选择了呢?求赐教
<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>& ...
- 用JS实现一个简单的购物车小案例
该案例主要是实现的功能有:添加商品功能,将商品添加到购物车的功能还有将商品删除功能,还有就是移出购物车的功能 该案例实现的难点是将商品添加到购物车列表的时候 数量的增加,当购物车有该商品的时候就进行累 ...
- SQL数据库和语法
增删改查 SELECT prod_id, prod_name, prod_price FROM Products; SELECT * FROM Products; //增 INSERT INTO Cu ...
- Electron问题记录01:关于electron的notification在win10下不显示问题
0.问题描述 在学习electron官网的notification例程时, 使用官网的代码运行时无法按照预期弹出窗口,在查询官网时发现以下解决方法. 官网解决方法:在 Windows 10 上,您的应 ...
- 【Rust入门】(一)构建自己的第一个Rust项目
安装Rust 参考文档,指定安装目录和镜像配置. rustc --version 检查是否安装成功. 构建程序 使用rustc编译运行 rustc 编译:rustc main.js 运行: Windo ...
- 拖拽改变div宽、高(转)
$(function () { //绑定需要拖拽改变大小的元素对象 bindResize(document.getElementById('test')); }); function bindResi ...
- SpringBoot的几大重要问题
1: traceID调用链 2:异步调用注解问题 import org.springframework.scheduling.annotation.Async;import org.springfra ...
- Springboot中@RequestBody接收的对象传入首字母大写的参数时,无法接收到参数值的问题解决
在Vo对象中的变量上添加@JsonProperty("")注解 postman测试 转载:https://blog.csdn.net/qq_39069718/article/det ...
- 老系统的奇葩问题-tomcat7启动失败
好多年的tomcat7系统了 当时部署安装为了服务 直接启动 就这么简单 好多年没动过了 这次修改了些东西 需要重启 却报错了... 解决: 把服务删除 使用bat启动 成功. 原因:可能是多个 ...