Mongodb es una base de datos no relacional (NoSQL) que permite la escalabilidad (Big Data) y que ha sido adoptada por empresas reconocidas como Cisco, Codecademy, eBay, Forbes y SAP.
Pymongo es el driver con el que se puede conectar a Python con Mongodb. Una ventaja de Mongodb es que maneja documentos json equivalentes a diccionarios en Python. Una ejemplo de cómo insertar documentos en la base de datos mongo a través de Python puede ilustrarse usando la página "http://media.mongodb.org/zips.json" que presenta una colección de códigos postales de Estados Unidos del tipo:
{
"_id": "10280",
"city": "NEW YORK",
"state": "NY",
"pop": 5574,
"loc": [
-74.016323,
40.710537
]
}
- >>> import urllib2
- >>> import pymongo
- >>> coneccion = pymongo.MongoClient("localhost", 27017) #Establecemos la #conección con mongo
- >>> db = coneccion.zipcodes #La base de datos se llama zipcodes
- >>> datos = db.zip #La coleccion de documentos se llama zip
- >>> url = "http://media.mongodb.org/zips.json" #De esta página extraemos los #datos json
- >>> doc = urllib2.urlopen(url) #Abrimos la página
- >>> for line in doc:
- datos.insert(eval(line)) #Recorremos cada línea, la convertimos en #diccionario y
- #la insertamos en la colección zip
Ahora si entramos a la linea de comados de mongo podemos comprobar que existe la base de datos y la colección. Y podemos usar los comandos de búsqueda de mongodb:
- C:\Users>mongo
- MongoDB shell version: 2.4.8
- connecting to: test
- > show dbs
- datoszip 0.203125GB
- reddit 0.203125GB
- test 0.203125GB
- > use datoszip
- switched to db datoszip
- > show collections
- system.indexes
- zip
- > db.zip.findOne()
- {
- "_id" : "01001",
- "city" : "AGAWAM",
- "state" : "MA",
- "pop" : 15338,
- "loc" : [
- -72.622739,
- 42.070206
- ]
- }
- > db.zip.find({city:'SEATTLE'}).limit(2).pretty()
- {
- "_id" : "98101",
- "city" : "SEATTLE",
- "state" : "WA",
- "pop" : 5801,
- "loc" : [
- -122.330456,
- 47.611435
- ]
- }
- {
- "_id" : "98102",
- "city" : "SEATTLE",
- "state" : "WA",
- "pop" : 19000,
- "loc" : [
- -122.320993,
- 47.63025
- ]
- }
No hay comentarios.:
Publicar un comentario