为了账号安全,请及时绑定邮箱和手机立即绑定

在python中连接MongoDB集群(MongoDB Cluster)

标签:
Python

建立了一个mongo集群,有3个节点,分别为:
mongo-1
mongo-2
mongo-3

mongo集群没有提供类似mysql集群和redis集群中的虚拟IP。在使用的时候需要客户端连接时指定mongo集群的所有节点。

python连接MongoDB的驱动为pymongo, 基于pymongo 有封装的mongoengine,以及基于mongoengine 的 flask_mongoengie.

具体写法如下:

pymongo

#!/usr/bin/env python# coding=utf-8from pymongo import MongoClient# single mongo#c = MongoClient(host="mongo-1", port=28010) # okay#c = MongoClient('mongodb://admin:123456@mongo-1:28010,mongo-2:28010/?replicaSet=rsname')# mongo clusterc = MongoClient('mongodb://admin:123456@mongo-1:28010,mongo-2:28010,mongo-3:28010')#c = MongoClient('mongodb://admin:123456@mongo-1:28010,mongo-2:28010,mongo-3:28010/?readPreference=secondary')#c = MongoClient('mongodb://admin:123456@mongo-3:28010/?readPreference=secondary')print c.nodesprint c.database_names()

mongoengine

from mongoengine import connectfrom mongoengine import Documentfrom mongoengine import StringField

connect('mpc', host='mongodb://mpc:mpc@mongo-1:28010,mongo-2:28010,mongo-3:28010/mpc')class User(Document):
    title = StringField(required=True, max_length=200)print User.objects.count()

flask_mongoengine

from flask_mongoengine import MongoEnginefrom flask import Flask


app = Flask(__name__)#app.config.from_pyfile('the-config.cfg')#app.config['MONGODB_SETTINGS'] = {#        'db': 'mpc',#        'username': 'mpc',#        'password': 'mpc',#        'host': 'mongo-2',#        'port': 28010 #        }""" 
# NOTE: connect_settings invalid.
app.config['MONGODB_SETTINGS'] = [
        {
        'db': 'mpc',
        'username': 'mpc',
        'password': 'mpc',
        'host': 'mongo-1',
        'port': 28010 
        },
        {
        'db': 'mpc',
        'username': 'mpc',
        'password': 'mpc',
        'host': 'mongo-2',
        'port': 28010 
        }
        ]
"""app.config['MONGODB_SETTINGS'] = {        'host': 'mongodb://mpc:mpc@mongo-1:28010,mongo-2:28010,mongo-3:2801/mpc',
        }


db = MongoEngine(app)class User(db.Document):
    email = db.StringField(required=True)
    first_name = db.StringField(max_length=50)
    last_name = db.StringField(max_length=50)print 'filter', User.objects.filter()

扩展阅读:

python_mongo
https://github.com/jiaxiaolei/projects/tree/master/python_mongo
简介:
上面示例代码可以在github上看到。



作者:jiaxiaolei
链接:https://www.jianshu.com/p/a0a23443146e來源:简书


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消