在python中将变量值替换为命令

Posted

技术标签:

【中文标题】在python中将变量值替换为命令【英文标题】:Substitute variable value to command in python 【发布时间】:2021-11-05 18:10:17 【问题描述】:

我正在尝试编写一个简单的 python 脚本来从 mongodb 收集某些命令输出,作为备份前后验证数据库的一部分。

下面是脚本。

import pymongo
import json
client = pymongo.MongoClient('localhost',username='admin',password='admin')
db = client['mydb']
collections = list(db.list_collection_names())
for i in collections:
  print(db.$i.estimated_document_count())

所有集合都存储在名为集合的列表中,我想在 for 循环中运行它,以便我可以获取每个集合中的文档数。我知道这里的最后一个打印语句是错误的。如何正确处理?我希望 $i 在每次迭代期间替换集合名称,以便我可以获得该集合的文档数。

当我运行“print(db.audit.estimated_document_count())”时,它会为我提供审计集合中的文档计数。但是如何在 for 循环中遍历列表并替换命令中 i 的值呢?

另外,为了验证备份/恢复,我应该对数据库运行任何其他命令来验证备份/恢复吗?

【问题讨论】:

【参考方案1】:

您不能在“点”表达式中使用计算值作为标识符,至少在不使用肮脏技巧的情况下不能。

可以做的是找到一些其他的机制来获取给定名称的集合。根据tutorial和API reference,可以用db['foo']代替db.foo

【讨论】:

原来很简单。非常感谢。

以上是关于在python中将变量值替换为命令的主要内容,如果未能解决你的问题,请参考以下文章

如何在 pyspark 数据框中将变量值分配为新列值?

无法在 SocialEngine 中将变量值视为简单测试

在本机 C++ 中将变量从 C# 编组为 void*,并在本机程序内更改 Managed/C# 中的变量值

如果存储过程失败,则在执行 SQL 任务中将输出变量值获取到 ssis 变量中

在 RoR 中将变量值注入 javascript 和 HAML

jQuery - 用变量值替换文本中的单词