python - 如何使用 Python 动态创建 mongo 数据库的名称?

标签 python mongodb

我正在用 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/

相关文章:

python - 标准输出与哈希结果的比较(python)

java.lang.ExceptionInInitializerError 引起的 : com. fastxml.jackson.databind.JsonMappingException : Jackson version is too old 2. 5.1

mongodb - 复制数据库时不针对 admin db 进行身份验证

node.js - 如何正确使用函数 populate()

python - Django Rest Framework - 嵌套序列化不嵌套

python - 如何过滤掉列表列中包含特定子序列的 Pandas DataFrame 中的行?

python - 为什么 is(AN()) == ideA()) 不同于 A() is A()?

python - 无法使用 Python 通过 socks5 代理发送请求

javascript - 如何更新mongodb中的文档字段?

mongodb - 将 $facet mongo 查询转换为 Spring Data