建立了一个MongoDB集群,集群名称 replSet=rs0,包含以下 3 个节点:
172.16.250.233:27017 # SECONDARY
172.16.250.234:27017 # PRIMARY
172.16.250.237:27017 # SECONDARY
集群的 test 用户的密码为 “123456” ,只能访问 test 数据库。
另外还有一个MongoDB数据库单独部署在 172.16.250.238,其 admin 用户的密码为 “123456” ,只能访问 admin 数据库。
MongoDB集群没有提供类似MysqL集群和Redis集群中的虚拟IP。在使用的时候需要客户端连接时指定MongoDB集群的所有节点。
Python连接MongoDB的驱动为pymongo, 基于pymongo 有封装的mongoengine,以及基于mongoengine 的 flask_mongoengie。
具体写法如下:
pymongo
# coding=utf-8
from pymongo import MongoClient
# single mongo
c = MongoClient(host="172.16.250.238", port=27017) # ret : ['admin', 'config', 'local']
# c = MongoClient(host="mongodb://172.16.250.238:27017") # ret : ['admin', 'config', 'local']
# c = MongoClient(host="mongodb://admin:[email protected]:27017") # ret : ['admin', 'config', 'local']
# c = MongoClient(host="mongodb://admin:[email protected]:27017/admin") # ret : ['admin', 'config', 'local']
# mongo cluster
# c = MongoClient('mongodb://test:[email protected]:27017,172.16.250.234:27017,172.16.250.237:27017/test') # ret : ['test']
# c = MongoClient('mongodb://test:[email protected]:27017,172.16.250.234:27017,172.16.250.237:27017/test?replicaset=rs0') # ret : ['test']
# c = MongoClient('mongodb://test:[email protected]:27017,172.16.250.234:27017,172.16.250.237:27017/test?readPreference=secondary') # ret : ['test']
print(c.list_database_names())
mongoengine
from mongoengine import connect
from mongoengine import Document
from 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 MongoEngine
from 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上看到。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。