¿Es posible usar Variable para el nombre de colección usando pymongo?

¿Es posible usar Variable para el nombre de colección usando pymongo? por ejemplo:

col = 'my_collection' db.col.update() 

Puedes usar:

 col = 'my_collection' db[col].update() 

referencia

Estás tratando de llamar a un método desde una cadena. Esto no es específico de pymongo.

Puede usar getattr para ver si la cadena existe como un atributo en su objeto db , luego llámela.

p.ej

 my_collection = getattr(col, 'my_collection') my_collection.update() 

edición: tenga en cuenta que el uso del enfoque getattr permite el manejo de excepciones en el caso de que la cadena no sea un método o atributo de col .

La respuesta de Ashoka Lella es perfecta. Un poco de adición a esto es tener esta statement en la clase de su modelo de matraz.

 __collection__="default" #Any default collection, which may or may not be used by the application 

El hecho de que su colección esté en una variable no significa que pueda omitir la definición del atributo de colección . Estoy pegando mi código debajo de donde lo usé de esta manera.

 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" 

No olvide registrar su nombre de clase en la variable db – db.register ([Colección])