从python脚本调用mongoimport

时间:2016-08-01 13:21:47

标签: python django mongodb

我正在尝试使用以下命令导入json文件:mongoimport -c collection -d db < file.json。当我从shell调用此命令时,将导入每个文档。但是,当我尝试使用模块子流程从python脚本中调用它时,如下所示:subprocess.call('mongoimport -c collection -d db < file.json', shell=True),我有以下错误:Failed: error processing document #37: unexpected EOF。有人可以解释一下为什么它适用于shell而不是从脚本中调用它吗?

提前致谢。

2 个答案:

答案 0 :(得分:1)

我的意思是因为subprocess.Popen构造函数接受args列表,而不是字符串,如下所示:

p = subprocess.Popen(['mongoimport', '--db', 'AutoPrivilege', '-c','cars', 'stockvo.json', '--jsonArray', '--upsert','--drop'])...

答案 1 :(得分:0)

您可以使用 os 命令:

for dump_file in dumped_files:
    collection_name = dump_file.split('/')[-1].split('.')[0]
    # Restoring collection
    os.system(f'mongoimport --host {host} -d {database} --port {port} --collection {collection_name} --file {backup_file} --jsonArray --upsert')