首页 > 解决方案 > 在python中将变量值替换为命令

问题描述

我正在尝试编写一个简单的 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 的值呢?

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

标签: pythondatabasemongodbpymongodatabase-backups

解决方案


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

可以做的是找到一些其他机制来获取给定名称的集合。根据教程API 参考,您可以db['foo']使用db.foo.


推荐阅读