python - example - pymongo object
¿Es posible usar Variable para el nombre de colección usando pymongo? (3)
Estás intentando llamar a un método desde una cadena. Esto no es específico para 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
.
¿Es posible usar Variable para el nombre de colección usando pymongo? por ejemplo:
col = ''my_collection''
db.col.update()
La respuesta de Ashoka Lella es perfecta. Un poco de adición a esto es tener esta declaración 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])