是否可以使用pymongo将变量用于集合名称? 例如:
col = 'my_collection'
db.col.update()
答案 0 :(得分:40)
答案 1 :(得分:6)
您正在尝试从字符串中调用方法。这不是pymongo特有的。
您可以使用getattr查看字符串是否作为db
对象上的属性存在,然后调用它。
e.g。
my_collection = getattr(col, 'my_collection')
my_collection.update()
编辑:请注意,在字符串不是col
的方法或属性的情况下,使用getattr方法允许异常处理。
答案 2 :(得分:1)
Ashoka Lella的答案很完美。 另外一点是在烧瓶模型的类中有此语句。
__collection__="default" #Any default collection, which may or may not be used by the application
仅仅是因为您的集合位于变量中,并不意味着您可以跳过集合属性的定义。我将代码粘贴到使用这种方式的地方。
class Collection(Document):
__collection__ = "collection_1"
structure = {
"name": str,
"email": str,
"status": bool,
"extra": dict
}
required_fields = ["name", "email"]
default_values = {"status": "inactive", "extra": {}}
def insertDocument(self, data):
print "model : " + data["collection"]
db[data["collection"]].insert(data["data"])
return "from model"
别忘了在db变量上注册您的类名- db.register([Collection])