Python连接MongoDB集群

本文分享了一位初学者在使用Python的pymongo库连接MongoDB集群时遇到的问题及解决方案。作者最初尝试连接单机失败,后通过调整代码成功实现了与MongoDB集群的连接,详细记录了修改前后的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近刚开始接触MongDB,学习爬虫,需要把爬取到的数据存到Mongo中去,刚开始连接单机,后来连接不上了,了解到mongdb是集群,是有主从,连接单机是不行的,请教了下大神,特此记录下:

附上代码

mongdb类

import pymongo

'''
    mongdb 操作工具类
'''


class mongodb:
    def __init__(self, host, port, dbname, username, pwd):
        self.client = pymongo.MongoClient(host=host, port=port)
        self.db = self.client[dbname]
        self.db.authenticate(username, pwd)

    def get_collection(self, collectionname):
        # 选择集合(mongo中collection和database都是延时创建的)
        coll = self.db[collectionname]
        return coll

    def close(self):
        self.client.close()
        self.client = None

连接mongdb集群

 def open_spider(self, spider):
        self.db = mongodb('mongodb://节点1,节点2,节点3', port, 'dbname', "username", "pwd")
        self.collection = self.db.get_collection("数据库名") 

结果没问题了,又能连接了

### 如何配置 Python 连接 MongoDB #### 使用 PyMongo连接 MongoDB 数据库 为了使 Python 能够与 MongoDB 交互,需安装并导入 `pymongo` 库。此过程涉及创建客户端实例来建立到指定服务器地址的链接,并通过认证机制访问特定数据库及其集合。 对于具体实现方式,在定义函数 `db_conn()` 中展示了如何设置多节点集群环境下的连接参数以及执行基本查询操作: ```python from pymongo import MongoClient, ReadPreference def db_conn(): # 创建 MongoClient 实例,传入多个主机端口组合构成副本集成员列表 client = MongoClient( ['192.168.2.188:20000', '192.168.2.190:20000', '192.168.2.191:20000']) # 获取 admin 数据库用于身份验证 db_auth = client.admin # 执行用户名密码形式的身份验证动作 db_auth.authenticate('lty', 'lty@100729') # 获取目标数据库对象 kafka_test 并指定了读取偏好为优先次级节点 db = client.get_database('kafka_test', read_preference=ReadPreference.SECONDARY_PREFERRED) # 访问名为 ITS_Topic_CommandACK 的集合 collection = db.ITS_Topic_CommandACK # 遍历该集合中的所有文档并将它们打印出来 for document in collection.find(): print(document) if __name__ == '__main__': db_conn() ``` 上述代码片段说明了怎样利用给定 IP 地址和端口号构建一个能够处理高可用性的 MongoDB 客户端应用程序[^2]。 此外,值得注意的是 MongoDB 是一种 NoSQL 类型的数据管理系统,它提供了介于传统的关系型数据库系统和其他纯粹键值对存储方案之间的一种折衷选择,具有良好的灵活性和支持复杂查询的能力[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值