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

如何通过Python连接MongoDB BI Connector?需PLAIN(LDAP)认证示例

问题

想了解能否使用pymongo连接MongoDB BI Connector,若可行请提供带有PLAIN(LDAP)认证机制的示例。曾尝试用pymongo连接,但返回错误“got responce id xxxxxxxxxx but expected xxxxx”,无法成功连接BI Connector(该BI Connector在Java中可正常连接)。尝试的代码如下:

from pymongo import MongoClient

# Replace 'localhost' with the hostname or IP address of your BI 
Connector server
host = 'localhost'
port = 27017  # Default port for MongoDB

# Connect to the MongoDB BI Connector without specifying username 
and password
mongo_uri = f"mongodb://{host}:{port}/"
client = MongoClient(mongo_uri)

# Now you can use the 'client' object to interact with the 
MongoDB BI Connector
# For example, you can access databases and collections like 
this:
db = client['your_database_name']
collection = db['your_collection_name']

# Perform your operations on the collection here

该代码可正常连接MongoDB,但无法连接BI Connector。请问MongoDB与MongoDB BI Connector的连接方式是否相同?是否有相关文档可以参考(我在pymongo官网未找到)?

解答

  • pymongo无法连接MongoDB BI Connector
    MongoDB BI Connector提供的是SQL兼容的ODBC/JDBC接口,遵循SQL协议;而pymongo是专为MongoDB原生协议开发的驱动,两者底层通信协议完全不同。这就是你遇到got response id xxxxxxxxxx but expected xxxxx错误的核心原因——pymongo发送的MongoDB协议请求,BI Connector无法用对应协议响应,导致请求ID不匹配。

  • MongoDB与BI Connector的连接方式差异
    直接连接MongoDB使用的是MongoDB原生协议,支持pymongo这类专属驱动;而BI Connector是作为SQL中间层存在,必须使用ODBC/JDBC这类SQL驱动连接。你Java中能正常连接,正是因为使用了符合SQL协议规范的JDBC驱动。

  • 带PLAIN(LDAP)认证的连接示例(使用pyodbc)
    既然pymongo不适用,推荐使用pyodbc这类支持ODBC的库连接BI Connector,以下是带LDAP PLAIN认证的示例:

    import pyodbc
    
    # 配置BI Connector的ODBC连接参数
    driver = "{MongoDB BI Connector}"  # 对应你安装的ODBC驱动名称
    host = "localhost"
    port = 3307  # BI Connector默认SQL端口(并非MongoDB的27017)
    db_name = "your_database_name"
    username = "your_ldap_username"
    password = "your_ldap_password"
    
    # 构建带LDAP PLAIN认证的连接字符串
    conn_str = f"""
    DRIVER={driver};
    SERVER={host};
    PORT={port};
    DATABASE={db_name};
    AUTHENTICATION=PLAIN;
    UID={username};
    PWD={password};
    """
    
    # 建立连接并执行SQL查询
    conn = pyodbc.connect(conn_str)
    cursor = conn.cursor()
    
    # 示例:查询集合数据
    cursor.execute("SELECT * FROM your_collection_name LIMIT 10")
    for row in cursor:
        print(row)
    
    # 关闭连接
    cursor.close()
    conn.close()
    

    注意:需要先安装MongoDB BI Connector的ODBC驱动,以及pyodbc库(执行pip install pyodbc安装)。

  • 参考文档
    可查阅MongoDB BI Connector官方文档中关于ODBC/JDBC连接配置、LDAP认证的相关章节,里面会详细说明驱动安装、连接参数设置等内容。

内容的提问来源于stack exchange,提问作者wei jian ng

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 10:32:44