Pymongo 连接mongodb集群

Pymongo 连接mongodb集群

老师,你好请问一下,搭建了mongodb集群 分片(Sharding)模式,如何通过python去操作呢,网上查询到的资料都好少,我直接使用 python操作 mongos 报错呢。

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕凡 2022-11-29 10:09:26

同学,你好!

同学可以参考以下代码

import pymongo

conn = pymongo.Connection('127.0.0.1', 27017) 
db = conn['test'] #连接test数据库 
db_admin = conn['admin'] #command的执行必须通过名为admin的db才能进行 
col_data = db["data"] 
db_admin.command('enablesharding', 'test') #确认目标db的sharding功能开启(这行代码一个数据库只执行一次有效,如果已经设置,则会抛出异常)
db_admin.command('shardcollection', 'test.data', key = {'_id':1}) #指定目标collection和对应的shard key(这行一个表执行一次,如果出现多表,表名不同的情况下,应该每张表都执行一次)
conn.close()

同学在连接过程中遇到错误,可以根据错误去解决问题,祝学习愉快~

  • 提问者 AmoXiang #1
    import pymongo
    client = pymongo.MongoClient(host="我的host", port=11111,username="******",password="*****")
    db_admin = client['testamo']  # command的执行必须通过名为admin的db才能进行
    conn = db_admin['amo']  # 连接test数据库
    student1 = {"id": '20170101', "name": "AmoXiang", "age": 20, "gender": "male"}
    result = conn.insert_one(student1)
    print(result)
    print(result.inserted_id)
    client.close()

    老师我像上面这样测试报错了 我是通过连接的mongos的服务,mongos好像是自动分发路由,但是我一执行插入和查询操作就报错。我在集群中testamo这个库和amo这个集合都是设置了分片的

    https://img1.sycdn.imooc.com//climg/63857d5c0942f2b708530584.jpg

    https://img1.sycdn.imooc.com//climg/63857cf6091b076319050651.jpg

    2022-11-29 11:32:47
  • 提问者 AmoXiang #2

    老师 上图中有个截图是执行的testdb是截图错误

    https://img1.sycdn.imooc.com//climg/63857de109464f8b08770416.jpg

    2022-11-29 11:35:04
  • 好帮手慕凡 回复 提问者 AmoXiang #3

    同学,你好!

    老师这边对mongodb集合相关问题不太了解,同学可以学习以下https://www.imooc.com/learn/501 MongoDB集群之分片技术应用课程,祝学习愉快~

    2022-11-29 14:58:56
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师