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

ArcticDB是否支持带凭证的MongoDB连接?添加凭证后触发调用错误

解决Arctic连接带凭证MongoDB时的TypeError: 'Database' object is not callable问题

可能的触发原因

这个错误大多是因为Arctic与pymongo版本不兼容,或是带凭证的连接字符串格式不对,导致Arctic解析连接时出错,误将Database对象当成可调用函数。另外,MongoDB用户权限配置不全也可能引发这类问题。

具体解决步骤

1. 修正连接字符串格式

带凭证的连接需要明确指定Arctic默认使用的arctic数据库,避免解析歧义:

store = Arctic('mongodb://admin:admin@localhost:27017/arctic')

也可以通过先创建MongoClient再指定数据库的方式初始化:

from pymongo import MongoClient
client = MongoClient('mongodb://admin:admin@localhost:27017')
store = Arctic(client['arctic'])

2. 检查MongoDB用户权限

确保你的admin用户拥有arctic数据库的读写权限,临时测试可以给用户赋予超级权限(生产环境谨慎使用):

use admin
db.createUser({
  user: "admin",
  pwd: "admin",
  roles: [ { role: "root", db: "admin" } ]
})

执行后重启MongoDB服务,再尝试连接。

3. 匹配Arctic与pymongo的兼容版本

Arctic对pymongo版本依赖严格,版本不匹配会引发各种奇怪错误。建议卸载现有版本后安装兼容组合:

pip uninstall -y arctic pymongo
# 示例兼容版本组合:Arctic 1.79.0 + pymongo 3.12.0
pip install arctic==1.79.0 pymongo==3.12.0

4. 排查代码命名冲突

检查代码中是否有变量名和Database、arctic重名的情况,比如:

# 错误示例:变量名覆盖了pymongo的Database类
Database = "some_value"
# 或者
arctic = "other_value"

这种命名冲突会导致调用时出现类型错误,需要修改变量名。

验证测试

先单独用pymongo测试连接是否正常:

from pymongo import MongoClient
client = MongoClient('mongodb://admin:admin@localhost:27017/arctic')
db = client['arctic']
# 如果能输出集合列表,说明连接没问题
print(db.list_collection_names())

再测试Arctic初始化:

from arctic import Arctic
store = Arctic('mongodb://admin:admin@localhost:27017/arctic')
store.initialize_library('test_lib')
# 输出包含test_lib则说明初始化成功
print(store.list_libraries())

内容的提问来源于stack exchange,提问作者Sergej Zivkovic

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 10:09:55