我正在用 Python 编写应用程序的后端并写入 PyMongo 数据库。
我正在设置一些服务器,我希望它们作为区 block 链中的节点同时运行。在我的原型(prototype)中,我需要每个节点在我的数据库中为其区 block 链版本创建自己的集合,例如每个节点的 blockchain-{insert node_id}
。
我对 python 还很陌生,一直在自学,但很难将 .format
方法与创建这些集合结合起来。
我知道这有效:
client = MongoClient('mongodb://localhost:27017/')
db = client.my_blockchain
col_blockchain = db.name_of_blockchain
结果:名为“name_of_blockchain”的集合
但是当我尝试以下操作时,出现错误:
col_blockchain = db['col_my_blockchain_{}'].format(node_id)
结果:错误:
TypeError: 'Collection' object is not callable. If you meant to call the 'format' method on a 'Collection' object it is failing because no such method exists.
或者当我尝试将名称保存在变量中时,我没有得到动态答案:
col_blockchain_name = 'col_my_blockchain_{}'.format(node_id)
col_blockchain = db.col_blockchain_name
结果:每个运行的服务器的名为“col_blockchain_name”的集合(因此不是动态的)
最佳答案
这段代码:
col_blockchain = db['col_my_blockchain_{}'].format(node_id)
正在寻找一个名为col_my_blockchain_{}
的字典元素,当它检索到它时,它会尝试调用它的字符串format
函数。你想做的是:
col_blockchain = db['col_my_blockchain_{}'.format(node_id)]
在尝试访问它之前,它会完全形成字典键。您所需要做的就是移动]
关于python - 如何使用 Python 动态创建 mongo 数据库的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54072818/