You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PyMongo连接AWS DocumentDB遇InvalidURI错误求助

问题排查与解决

核心原因

你的连接URI中存在无效的双分隔符&&,导致pymongo解析URI选项时无法识别合法的键值对,触发InvalidURI错误。

查看你的连接字符串:

"mongodb://user:password@prod-docdb-2022-09-02-06-10-32.cluster-cqjdkdkioshsjsaafcooj9.ap-south-1.docdb.amazonaws.com:27017/school?replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false&&tls=true&tlsCAFile=rds-combined-ca-bundle.pem"

其中retryWrites=false&&tls=true里的&&是错误写法,应该改为单个&。

修复后的连接代码

修改URI中的双&为单&即可正常连接:

def get_data(col, filters):
    myclient = pymongo.MongoClient("mongodb://user:password@prod-docdb-2022-09-02-06-10-32.cluster-cqjdkdkioshsjsaafcooj9.ap-south-1.docdb.amazonaws.com:27017/school?replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false&tls=true&tlsCAFile=rds-combined-ca-bundle.pem")
    mydb = myclient["school"]
    mycol = mydb[col]
    res = mycol.find(filters)
    return loads(dumps(res))

额外优化建议

  • 避免硬编码敏感信息:把用户名、密码、URI等敏感信息放到环境变量或配置文件中,降低泄露风险:
    import os
    from dotenv import load_dotenv
    
    load_dotenv()
    docdb_uri = os.getenv("DOCDB_CONNECTION_URI")
    myclient = pymongo.MongoClient(docdb_uri)
    
  • 优化游标转JSON逻辑:loads(dumps(res))会一次性将所有查询结果加载到内存,数据量大时可能导致内存占用过高,建议改用列表推导式替代:
    return list(res)
    

内容的提问来源于stack exchange,提问作者Kiran S youtube channel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 06:45:36