首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pymongo如何设置read_preference

Pymongo如何设置read_preference
EN

Stack Overflow用户
提问于 2022-04-07 18:19:32
回答 3查看 193关注 0票数 3

如何使PyMongo能够从最近的地方读取?这个字段db.read_preference现在是只读的.

代码语言:javascript
复制
from pymongo import ReplicaSetConnection
from pymongo import ReadPreference

db = ReplicaSetConnection('localhost:27017', replicaSet='rs1')['my_db']
db.read_preference = ReadPreference.NEAREST
db.tag_sets = [{'secondaries': 1}]
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-04-11 15:16:17

您需要将其添加到连接字符串,如下所示:

代码语言:javascript
复制
db = ReplicaSetConnection('localhost:27017?readPreference=nearest', replicaSet='rs1')['my_db']

代码语言:javascript
复制
db = MongoClient("myhost:27017", read_preference=ReadPreference.NEAREST, replicaSet='rs1')['my_db']

由于任何原因,您使用的给定语法都会失败,这似乎是支持早期Pymongo版本的语法。

票数 2
EN

Stack Overflow用户

发布于 2022-04-13 05:03:03

PyMongo ReadPreference还可以应用于数据库、集合或查询级别(除了连接字符串URI和MongoClient)。

代码语言:javascript
复制
from pymongo import ReadPreference

# Specifying read preference at database level
db1 = client.testdb1
db2 = client.get_database('testdb2', read_preference=ReadPreference.NEAREST)

# Specifying read preference at collection level
coll2 = db1.coll1.with_options(read_preference=ReadPreference.NEAREST)

# Specifying read preference for a specific query
result = db1.coll1.with_options(read_preference=ReadPreference.NEAREST).find()

注意,较低级别上的读取首选项集(例如集合)将覆盖上一层(例如,数据库或mongo客户端)的首选项。

票数 2
EN

Stack Overflow用户

发布于 2022-04-11 15:34:39

选项1(每个连接):

代码语言:javascript
复制
>>> from pymongo import MongoClient, ReadPreference
>>> db = MongoClient("myhost:27017", read_preference=ReadPreference.NEAREST).test
>>> db.collection.find_one({test:1})

选项2(每次查询):

代码语言:javascript
复制
>>> db.collection.find_one({test:1},read_preference=ReadPreference.NEAREST)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71787141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档