如何将本地mongodump导入本地MongoDB并通过pymongo访问
问题核心原因
- 触发语法错误的根本原因有两个:
mongorestore是 MongoDB 官方提供的独立命令行工具,不属于 Python 语法体系,不能直接将命令行语句写在 Python 脚本内运行。- 代码中使用
//做行注释的写法是JavaScript语法,Python不支持该注释格式,单独运行这类代码行也会触发语法报错。
- 上述写法混淆了命令行操作流程和pymongo脚本操作流程:pymongo仅负责与已运行的本地MongoDB实例做数据交互,本身不内置dump文件恢复能力。
正确操作流程
第一步:完成dump文件导入(无需编写Python代码)
- 确保本地已安装对应版本的MongoDB Community版,安装完成后
mongorestore工具会自动配置到系统环境变量中。 - 打开系统命令提示符(CMD)或PowerShell,不要在Python解释器、.py脚本编辑环境内敲写命令,直接执行恢复指令:
对应提供的路径示例,实际可执行的命令为:mongorestore -d 目标新建数据库名 本地mongodump文件的存储绝对路径mongorestore -d db_name C:\Users\Lenovo\Documents\home\ubuntu\dump2020注意事项:如果dump文件路径包含空格,需要将路径部分用英文双引号包裹;如果本地MongoDB配置了账号密码,需要在命令中追加
-u 用户名 -p 密码 --authenticationDatabase admin类参数完成身份校验后再执行导入。
第二步:通过pymongo访问导入完成的数据
- 等待命令行提示导入完成后,再运行pymongo连接脚本即可,不需要在脚本中加入任何和恢复逻辑相关的代码:
import pymongo # 连接本地运行的MongoDB实例 client = pymongo.MongoClient('mongodb://localhost:27017') # 获取已导入完成的数据库对象 database = client['db_name'] # 后续可直接执行查询操作,例如列出当前库下的所有集合 print(database.list_collection_names())
可选:在Python脚本内触发恢复操作的写法
如果确实需要将恢复逻辑集成在Python脚本中,不能直接书写mongorestore命令,需要调用Python的系统进程调用模块拉起独立的mongorestore进程,示例参考:
import subprocess # 调用系统可执行文件完成dump恢复 subprocess.run([ "mongorestore", "-d", "db_name", r"C:\Users\Lenovo\Documents\home\ubuntu\dump2020" ], check=True)
该写法本质仍是调用系统层面的mongorestore工具,和直接在命令行敲写命令的执行效果完全一致,并非通过pymongo自身能力实现数据恢复。
内容的提问来源于stack exchange,提问作者nandi1596
相关产品推荐
相关产品推荐

