如何使用Python动态创建Mongo数据库名称

2024-04-28 09:43:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Python编写应用程序的后端,并写入PyMongo数据库。在

我正在设置一些服务器,我希望它们作为区块链中的节点同时运行。在我的原型中,我需要每个节点在我的数据库中为它们的区块链版本创建自己的集合,因此例如每个节点的“区块链-{insert node_id here}”。在

我对python相当陌生,一直在自学,但很难将“.format”方法与创建这些集合结合起来。在

我知道这很管用:

client = MongoClient('mongodb://localhost:27017/')
db = client.my_blockchain
col_blockchain = db.name_of_blockchain

结果:名为“区块链名称”的集合

但当我尝试以下操作时,我得到一个错误:

^{pr2}$

结果:错误:

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”的集合(因此不是动态的)

(提前感谢,这是我的第一个堆栈溢出问题,请客气!)在


Tags: name服务器名称clientid数据库nodeformat
2条回答

此代码:

col_blockchain = db['col_my_blockchain_{}'].format(node_id)

正在查找名为col_my_blockchain_{}的dictionary元素,当它检索到该元素时,它正试图对其调用字符串format函数。你想做的是:

^{pr2}$

它在尝试访问之前完全形成字典键。你只需移动]

使用eval关键字,调用mongo集合

eval('col_my_blockchain.{}'.format(node_id))

这很管用

相关问题 更多 >