python操作mongodb实现读写分离
读写分离
默认情况下,MongoClient 实例将查询发送到副本集的主要成员。
要使用副节点作为查询,以实现读写分离,我们必须更改读取首选项:
读取首选项在模块pymongo.ReadPreference下:
- PRIMARY: 从主节点中读取(默认)
- PRIMARY_PREFERRED: 优先从主节点读取,如果不可用则从副节点读取、
- SECONDARY: 从副节点读取,如果副节点不可用,则抛出
AutoReconnect异常。 - SECONDARY_PREFERRED: 表示优先在副节点读取,如果不可用则从主节点读取。
- NEAREST: 从任意可用节点中读。
实例:
import time
import pymongo
if __name__ == '__main__':
# 初始化客户端
# mongo_client = pymongo.MongoClient(host="127.0.0.1", port=27017, username="", password="")
mongo_client = pymongo.MongoClient(
host="127.0.0.1",
port=27017,
# 设置读取操作时的偏好,
# PRIMARY: 从主节点中读取(默认)
# PRIMARY_PREFERRED: 优先从主节点读取,如果不可用则从副节点读取、
# SECONDARY: 从副节点读取,如果副节点不可用,则抛出AutoReconnect异常。
# SECONDARY_PREFERRED: 表示优先在副节点读取,如果不可用则从主节点读取。
# NEAREST: 从任意可用节点中读。
read_preference=pymongo.ReadPreference.SECONDARY_PREFERRED
)
# 延迟一下,因为MongoClient 构造函数是非阻塞的:
# 当客户端使用后台线程连接到副本集时,构造函数立即返回。
# 请注意,如果您创建客户端并立即打印其 nodes 属性的字符串表示形式,则列表最初可能为空。
# 如果稍等一下,MongoClient 会发现整个副本集:
time.sleep(1)
# 打印所有节点
print(mongo_client.nodes)
# 打印客户端的读取操作首选项
print(f"{mongo_client.read_preference=}")
"""
默认情况下,
Database 的读取首选项是从其 MongoClient 继承的,
Collection 的读取首选项是从其数据库继承的。
要使用不同的读取首选项,请使用 get_database() 方法或 get_collection() 方法:
也就是说你可以单独给某个db、集合来指定读取首选项!
"""
db = mongo_client.get_database("spider", read_preference=pymongo.ReadPreference.PRIMARY_PREFERRED)
print(f"{db.read_preference=}")
# 还可以通过with_options()方法来实现动态修改现有的db或者collection的读取首选项
db2 = db.with_options(read_preference=pymongo.ReadPreference.PRIMARY)
print(f"{db2.read_preference=}")
print(f"{db2=}")
collection = db.get_collection("test02", read_preference=pymongo.ReadPreference.NEAREST)
print(f"{collection.read_preference=}")
collection2 = collection.with_options(read_preference=pymongo.ReadPreference.SECONDARY)
print(f"{collection2.read_preference=}")
print(f"{collection2=}")
mongo_client.close()
python操作mongodb实现读写分离的更多相关文章
- mongodb的读写分离
转自:http://blog.csdn.net/sd0902/article/details/21538621 mongodb的读写分离使用Replica Sets来实现 对于replica set ...
- Python 操作 mongodb 数据库
原文地址:https://serholiu.com/python-mongodb 这几天在学习Python Web开发,于 是做准备做一个博客来练练手,当然,只是练手的,博客界有WordPress这样 ...
- python操作mongodb
# python操作mongodb # 首先,引入第三方模块pymongo,该模块是python用来操作mongodb的 import pymongo # 第二步,设置ip地址,以及表格名称,表格名字 ...
- 使用Python操作MongoDB
MongoDB简介(摘自:http://www.runoob.com/mongodb/mongodb-intro.html) MongoDB 由C++语言编写,是一个基于分布式文件存储的开源数据库系统 ...
- python操作三大主流数据库(10)python操作mongodb数据库④mongodb新闻项目实战
python操作mongodb数据库④mongodb新闻项目实战 参考文档:http://flask-mongoengine.readthedocs.io/en/latest/ 目录: [root@n ...
- python操作三大主流数据库(9)python操作mongodb数据库③mongodb odm模型mongoengine的使用
python操作mongodb数据库③mongodb odm模型mongoengine的使用 文档:http://mongoengine-odm.readthedocs.io/guide/ 安装pip ...
- python操作三大主流数据库(8)python操作mongodb数据库②python使用pymongo操作mongodb的增删改查
python操作mongodb数据库②python使用pymongo操作mongodb的增删改查 文档http://api.mongodb.com/python/current/api/index.h ...
- python操作三大主流数据库(7)python操作mongodb数据库①mongodb的安装和简单使用
python操作mongodb数据库①mongodb的安装和简单使用 参考文档:中文版:http://www.mongoing.com/docs/crud.html英文版:https://docs.m ...
- MongoDB的安装与python操作MongoDB
一.安装MongoDB 因为我个人使用的是windows,就只记录下windows下的安装 1.下载安装 就是官网,下载msi,选个路径安装 2.配置 看见别的地方说需要手动在bin同级目录创建dat ...
- python 操作mongoDB数据库
网上关于python 操作mongoDB的相关文章相对不是很多,并且质量也不是很高!下面给出一个完整的 增删改查示例程序! #!/usr/bin/python # -*- coding: utf-8 ...
随机推荐
- css面试题一
1.继承 css的继承:就是给父级设置一些属性,子级继承了父级的该属性,这就是我们css中的继承.官方的解释,继承是一种规则,它允许样式不仅应用于特定的html标签元素,而且应用于其后代元素. a.有 ...
- linux查看IP、域名、端口的网络是否相通
linux查看IP.域名.端口的网络是否相通 1. ping # 检索当前域名对应的IP地址 ping 域名 # 查看IP是否相通 ping IP 2. tlenet # 查看指定IP的端口是否相通, ...
- DevOps|研发效能解决的是企业效率问题
研发效能并不能解决企业效益问题 它不是利润中心,不能给你带来直接收入(研发效能相关工具厂商做咨询.出方案.卖工具除外).想要解决企业效益问题,依赖于企业战略.业务/产品.组织.运营.创新等其他方面. ...
- 9. 用Rust手把手编写一个wmproxy(代理,内网穿透等), HTTP2改造篇之HPACK示例, 了解http2头信息如何处理
9. 用Rust手把手编写一个wmproxy(代理,内网穿透等), HTTP2改造篇之HPACK示例, 了解http2头信息如何处理 项目 ++wmproxy++ gite: https://gite ...
- Python3中的printable
import string characters = string.printable # printable 是用作字符串常量的预初始化字符串.里面包含所有的标点符号,数字 print(charac ...
- [NSSRound#1 Basic]basic_check
打开网站,发现啥也没有: 就用dirsearch扫了一遍.发现还是没有有用信息: 只有再另找方法: 再用nikto扫一次: 发现一个put方法,就用put上传一个一句话木马:可以用插件restlien ...
- C#经典十大排序算法(完结)
C#冒泡排序算法 简介 冒泡排序算法是一种基础的排序算法,它的实现原理比较简单.核心思想是通过相邻元素的比较和交换来将最大(或最小)的元素逐步"冒泡"到数列的末尾. 详细文章描述 ...
- 虹科分享|虹科Redis企业版数据库带你跑赢MySQL数字时代!
数字革命悄然爆发,数据库也将成为率先破局的关键技术! 借着互联网爆发的东风,前几年MySQL以其过硬的产品能力及开源优势,一度成为全球最受欢迎的关系型数据库.然而,革命的漫长之路才刚开始,MySQL是 ...
- 一步步带你剖析Java中的Reader类
本文分享自华为云社区<深入理解Java中的Reader类:一步步剖析>,作者:bug菌. 前言 在Java开发过程中,我们经常需要读取文件中的数据,而数据的读取需要一个合适的类进行处理.J ...
- 聊聊RNN&LSTM
RNN 用于解决输入数据为,序列到序列(时间序列)数据,不能在传统的前馈神经网络(FNN)很好应用的问题.时间序列数据是指在不同时间点上收集到的数据,这类数据反映了某一事物.现象等随时间的变化状态或程 ...