Python连接MongoDB集群的配置与实现

阿橙
阿橙
发布时间:2026-10-11 | 4人浏览过
原创

本文详细解析了Python连接MongoDB集群的方法。通过pymongo库,利用包含多个节点地址的URI字符串实现集群连接。文章介绍了基于configparser模块读取conf.ini配置文件的机制,展示了如何从配置中动态获取MongoDB主机地址,并提供了完整的连接代码示例与项目结构说明。

项目结构与配置

为了规范代码管理,项目通常划分为三个主要目录:config、模块目录以及utils。其中,config目录负责存放配置文件conf.ini及初始化文件__init__.py;模块目录包含核心运行逻辑main.py;而utils目录则用于存放常用函数及MongoDB连接类。

在conf.ini配置文件中,需要定义[MONGO]段,并指定dev.host的值。该值是一个标准的MongoDB URI字符串,包含集群中所有节点的地址,例如:mongodb://10.0.53.xx:10010,10.0.53.xx:10010,10.0.53.xx:10010。这种格式允许pymongo自动识别并连接集群中的多个节点。

Python连接MongoDB集群代码

在Python中,使用pymongo库连接集群非常简单。只需在创建MongoClient实例时,传入包含所有节点地址的URI字符串即可。以下是连接单机与集群的对比代码:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import time
from pymongo import MongoClient

# 连接单机示例(注释)
# single mongo
# c = MongoClient(host="192.168.89.151", port=27017)

# 连接集群示例
c = MongoClient('mongodb://192.168.89.151,192.168.89.152,192.168.89.153')

上述代码中,Client对象会自动处理与集群中各节点的连接。当提供多个主机地址时,驱动程序会尝试连接所有节点,并根据集群配置(如副本集或分片集群)进行路由。

动态读取配置文件

为了增强代码的灵活性和可维护性,建议从配置文件中动态读取MongoDB主机地址。以下代码展示了如何使用configparser模块读取conf.ini文件,并提取MongoDB主机配置:

import configparser
import os

# 定义环境变量
env = 'dev'
profile = env + '.'

# 从conf.ini中读取变量
config = configparser.ConfigParser()
config.read(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'conf.ini'))

# 初始化配置字典
CONFIG_DICT = {}

# 遍历配置节和键值对
for section in config.sections():
  for key, val in config.items(section):
    if key.startswith(profile):
      CONFIG_DICT['{0}_{1}'.format(section, key.replace(profile, '').upper())] = val

# 通过conf.ini定义变量
MONGO_HOST = CONFIG_DICT['MONGO_HOST']

该脚本首先定义环境变量env为'dev',并构建前缀profile。接着,使用configparser读取conf.ini文件。通过遍历所有节和键值对,筛选出以profile开头的键,并将其转换为大写下划线格式存入CONFIG_DICT。最后,从字典中提取MONGO_HOST,该值即为包含所有节点地址的URI字符串。

总结

通过上述方法,Python程序可以灵活地连接MongoDB集群。利用pymongo库和配置文件,可以实现配置与代码的分离,提高项目的可维护性和扩展性。以上就是Python连接MongoDB集群方法的详细内容,更多关于Python数据库连接的资料请关注本站其它相关文章!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表