comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Python + MongoDB = Pymongo

  • 1 Respuestas
  • 1524 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Sanko

  • *
  • Underc0der
  • Mensajes: 541
  • Actividad:
    0%
  • Reputación 0
  • ¿Puedes?
    • Ver Perfil
    • Underc0de
« en: Diciembre 20, 2012, 11:12:49 pm »
Bueno , no hace mucho publiqué una introducción sobre MongoDB con sus características , primeros pasos y demas.
Bien , pues hoy trataré sobre un tema que a muchos Pythoneros como yo les interesa.

MongoDB cuenta con unos drivers que soportan una gran variedad de lenguajes :

    C
    C++
    Erlang
    Haskell
    Java (and other JVM languages)
    Javascript
    .NET (C#, F#, PowerShell, ...)
    Node.js
    Perl
    PHP
    Python
    Ruby
    Scala

Para más información sobre los drivers : No tienes permisos para ver links. Registrate o Entra con tu cuenta
Uno de los más recomendados a la hora de tratar con MongoDB desde python es "Pymongo".

Primero debemos instalar la libreria pymongo , en mi caso uso mint asi que:
Código: Python
  1. sudo apt-get install pymongo

Jugaremos con  los mismos comandos con pymongo que realizamos en la introducción a MongoDB :

- Conectaremos con la BD
- Veremos las BD's que tenemos creadas
- Veremos las colecciones que tenemos ya creadas
- Crearemos una nueva BD
- Crearemos  una nueva colección
- Insertaremos nuevos documentos
- Actualizaremos documentos
- Buscaremos documentos
- Borraremos documentos con remove y con drop


Y como petición especial (me enviarón la duda por MP) y ya que al parecer no puede esperar al próximo tutorial de MongoDB :

- Borraremos bases de datos

Bueno comenzemos importando pymongo :
Código: Python
  1. from pymongo import Connection

Creamos la conexión con la BD :
Código: Python
  1. conex = Connection('localhost')

Ahí veís puse localhost por defecto porque la BD esta en nuestra PC y pymongo nos conecta con ella si le indicamos local pero ahi deberían de indicar el sitio de la BD y el puerto al que se conecta.

Bueno veamos las BD's que ya hay creadas :
conex.database_names()

Ahora creemos una BD nueva :

Código: Python
  1. db = conex.nombredb

Creamos una nueva colección :
Código: Python
  1. collect = db.coleccionnueva

Veamos que colecciones tenemos creadas :
Código: Python
  1. db.collection_names()

Insertemos un documento :
Código: Python
  1. collect.insert({"name":"sanko","twitter":"sankoSK"})

Actualizamos documentos con update():
Código: Python
  1. collect.update()

Vamos a realizar una busqueda de documentos :
Código: Python
  1. collect.find()

Borremos documentos con remove():
Código: Python
  1. collect.remove()

Vaciamos la colección (borramos todos los documentos) con drop():
Código: Python
  1. collect.drop()

Y ahora la petición especial , borrar bases de datos...


Aquí me explicaré un poquito más puesto que este comando es nuevo(No lo dimos en el post introductorio a MongoDB).
En MongoDB borrariamos la BD de la siguiente manera:

-Accedemos a la database
-Nos borramos


Código: Python
  1. use nuestrabd
  2. db.dropDatabase()

Una vez aclarado esto , veamos como borrariamos la bd en pymongo:
Código: Python
  1. conex.drop_database('nombredatabase')

Bueno , ahora pongamos esto en práctica creando un código SIMPLE, no nos vamos a matar creando un super manager para un tutorial... xd
Algo así :
Código: Python
  1. #       Probaremos los codes , asi que los pondremos todos
  2. #       Coded by Sanko
  3. #       Haremos lo siguiente :
  4. #               -Conectaremos con la BD
  5. #               -Veremos las BD's que tenemos creadas
  6. #               -Veremos las colecciones que ya tenemos creadas
  7. #               -Crearemos una nueva BD
  8. #               -Crearemos una nueva coleccion
  9. #               -Insertaremos nuevos documentos
  10. #               -Actualizaremos documentos
  11. #               -Borraremos documentos con remove y drop
  12.  
  13. #       Simple MongoDB-Manager using pymongo - Sanko
  14.  
  15. from pymongo import Connection
  16.  
  17. def mongomanager():
  18.  
  19.         conex = Connection('localhost')
  20.  
  21.         def databases():
  22.                 print "Control de BD's , Que deseas hacer?"
  23.                 entrada = raw_input("- [1]Visualizar BD's | [2]Crear BD's | [3]Borrar BD's | [4]Home -> ")
  24.                 if entrada == '1':
  25.                         var = conex.database_names()
  26.                         print var
  27.                         databases()
  28.                 elif entrada == '2':
  29.                         name = raw_input("Nombre de la BD que quieres crear -> ")
  30.                         global db
  31.                         db = conex.name
  32.                         databases()
  33.                 elif entrada == '3':
  34.                         delname = raw_input("Nombre de la BD que quieres eliminar -> ")
  35.                         conex.drop_database(delname)
  36.                         databases()
  37.                 elif entrada == '4':
  38.                         mongomanager()
  39.                 else:
  40.                         print "Error\n"
  41.                         mongomanager()
  42.  
  43.         def collections():
  44.                 print "Control de Colecciones , que deseas hacer?"
  45.                 entrada = raw_input("- [1]Visualizar colecciones | [2]Crear coleccion | [3]Home -> ")
  46.                 if entrada == '1':
  47.                         var = db.collection_names()
  48.                         print var
  49.                         collections()
  50.                 elif entrada == '2':
  51.                         global collectname
  52.                         collectname = raw_input("Nombre de la coleccion que quieres crear -> ")
  53.                         collect = db.collectname
  54.                         collections()
  55.                 elif entrada == '3':
  56.                         mongomanager()
  57.                 else:
  58.                         print "error\n"
  59.                         mongomanager()
  60.  
  61.         def documents():
  62.                 print "Control de Documentos , que deseas hacer?"
  63.                 entrada = raw_input("[1]Crear documento | [2]Busqueda de documentos | [3]Eliminar documento | [4]Home -> ")
  64.                 if entrada == '1':
  65.                         #Escriba el contenido de esta manera "name":"sanko" por ejemplo.
  66.                         document = raw_input("Escriba el contenido del doc => ")
  67.                         collectname.insert({"name":"sankito"})
  68.                         documents()
  69.                 elif entrada == '2':
  70.                         content = raw_input("Parametros del contenido -> ")
  71.                         var = collectname.find(content)
  72.                         print var
  73.                         documents()
  74.                 elif entrada == '3':
  75.                         choosedel = raw_input("Desea vaciar el documento(1) o borrar algo especifico(2) -> ")
  76.                         if choosedel == '1':
  77.                                 collectname.drop()
  78.                                 documents()
  79.                         elif choosedel == '2':
  80.                                 delcontent = raw_input("Parametros del borrado -> ")
  81.                                 collectname.remove(delcontent)
  82.                                 documents()
  83.                         else:
  84.                                 print "error\n"
  85.                                 documents()
  86.                 else:
  87.                         print "error\n"
  88.                         mongomanager()
  89.  
  90.         entrada = raw_input("PyMongo Manager => Exit(0) | Control BD's(1) | Control Colecciones(2) | Control de Documentos(3) -> ")
  91.         if entrada == '0':
  92.                 exit
  93.         elif entrada == '1':
  94.                 databases()
  95.         elif entrada == '2':
  96.                 collections()
  97.         elif entrada == '3':
  98.                 documents()
  99.         else:
  100.                 print "Error\n"
  101.                 mongomanager()
  102.  
  103. mongomanager()

Una imagen del rápido testeo :




Para los vagos aca les dejo el code en Pastebin -> No tienes permisos para ver links. Registrate o Entra con tu cuenta

El code esta creado muy rápidamente por eso tiene unos patrones muy rígidos a vuestra imaginación queda quitar lla necesidad de definir unas variables antes de crear el documento y demas cosas , eso ya se tiene que hacer pensando como sería más cómodo y dedicandole un buen rato.

Espero os sirviera este articulo , como siempre UN ABRAZO.
Saludos , Sanko
Sigueme en Twitter : @Sankosk
Estos nuevos staff no tienen puta idea XD

Desconectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5401
  • Actividad:
    36.67%
  • Reputación 31
  • ANTRAX
    • Ver Perfil
    • Underc0de
    • Email
  • Skype: underc0de.org
  • Twitter: @Underc0de
« Respuesta #1 en: Diciembre 20, 2012, 11:19:06 pm »
Excelente Sanko!! Esta buenisimo! muchas gracias!


 

¿Te gustó el post? COMPARTILO!



[Código] Yardas a metros - Metros a yardas [Python]

Iniciado por LucaSthefano

Respuestas: 0
Vistas: 1421
Último mensaje Mayo 29, 2011, 01:27:34 am
por LucaSthefano
[Código] Entero / No Entero [Ejercicio - Python]

Iniciado por LucaSthefano

Respuestas: 0
Vistas: 1390
Último mensaje Mayo 29, 2011, 01:24:09 am
por LucaSthefano
Python Trojan - By "bLiNdFiR3"

Iniciado por d33k40

Respuestas: 1
Vistas: 2114
Último mensaje Abril 03, 2010, 11:01:59 pm
por Dharok
Python phpmyadmin "BruteForce"

Iniciado por linkgl

Respuestas: 2
Vistas: 2550
Último mensaje Agosto 19, 2011, 12:14:37 pm
por linkgl
Python keylogger - by "bLiNdFiR3"

Iniciado por d33k40

Respuestas: 0
Vistas: 2061
Último mensaje Abril 07, 2010, 03:30:22 am
por d33k40