如何通过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

