使用python和subprocess.call将新成员添加到mongodb中设置的副本

时间:2013-07-28 14:43:40

标签: mongodb python-2.7 subprocess replication

我尝试将新成员添加到mongodb中设置的副本。有可能 用os.system做。但是如何使用subprocess.call()?

到目前为止,我有:

import subprocess

task='''"rs.add('alehandro-VirtualBox:27067')"'''
port=27072
subprocess.call(["/usr/bin/mongo", " --port {0}".format(port), " --eval {0}".format(task)])

输出:

  

MongoDB shell版本:2.4.5   连接到: - port 27072   Sun Jul 28 16:34:18.884 JavaScript执行失败:错误:[ - port 27072]不是src / mongo / shell / mongo.js中的有效数据库名称:L40   异常:连接失败

有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

正在使用名为 - 端口27072 的参数调用mongo进程,并使用值 - eval .. 调用mongo进程,因为您将参数传递给subprocess.call。

如果您将 subprocess.call 调用更改为以下内容,则它应该有效:

subprocess.call(["/usr/bin/mongo", "--port", str(port), "--eval", task])