Foros del Web » Programando para Internet » Python »

Django pasar contenido nuevo Scrapy

Estas en el tema de Django pasar contenido nuevo Scrapy en el foro de Python en Foros del Web. Muy buenas, estoy teniendo un problema haber si les explico bien: Tengo un proyecto en Django con un contenido idéntico a otro que tengo, fui ...
  #1 (permalink)  
Antiguo 08/04/2013, 00:24
 
Fecha de Ingreso: julio-2011
Mensajes: 62
Antigüedad: 12 años, 9 meses
Puntos: 5
Django pasar contenido nuevo Scrapy

Muy buenas, estoy teniendo un problema haber si les explico bien:

Tengo un proyecto en Django con un contenido idéntico a otro que tengo, fui seleccionando lo mejor y pasándolo manual a mi nuevo proyecto y también agregando muchas mas cosas. Ahora tengo un modelo asociado con ForeignKey al modelo principal, y en el otro proyecto tengo todo el contenido.

Problema: Como puedo pasar todo lo que hay en la otra aplicación al nuevo contenido puesto que los pk no son las mismas puesto que cambie todo manual, he leído sobre scrapy y urllib2, pero mi consulta es: Lo único igual son los títulos y slugs, podría verificar que ambos coincidan y sacar de allí los datos que necesito¿?, puedo hacerlo por medio de XML o JSON, no se, tengo tantas dudas y opciones que no se que hacer, son mas de 1000 contenidos.

Gracias.
  #2 (permalink)  
Antiguo 08/04/2013, 06:55
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Django pasar contenido nuevo Scrapy

La primera opción hubiera sido usando South para hacer migraciones y cambios en el schema.

La segunda opción seria usando dumpdata y loaddata. Pero tendrias que modificar el JSON que te genere.

La tercera opción seria serializar tus objetos con el modulo json.

Creo que scrapy, urllib(2), requests serian la peor que opción que puedes tomar ya que tienes formas mucho mas fáciles de obtener los datos.
  #3 (permalink)  
Antiguo 08/04/2013, 11:22
 
Fecha de Ingreso: julio-2011
Mensajes: 62
Antigüedad: 12 años, 9 meses
Puntos: 5
Respuesta: Django pasar contenido nuevo Scrapy

Hola, gracias por ayudarme, he leído sobre dumpdata y loaddata, por lo que entiendo nos serializa los modelos. Me genera un archivo JSON y este lo importa mediante loaddata.

Si todo esta bien, solo debo cambiar la ID de ForeignKey, como te explicaba tengo dos modelos:

Anime y Enlace, enlace contiene el foreignkey a Anime, yo agregue todo el contenido manual a otra aplicación por lo tanto las ID son diferentes. Que opinas al respecto.

Gracias.
  #4 (permalink)  
Antiguo 08/04/2013, 14:18
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Django pasar contenido nuevo Scrapy

Cita:
Iniciado por forosanto Ver Mensaje
Hola, gracias por ayudarme, he leído sobre dumpdata y loaddata, por lo que entiendo nos serializa los modelos. Me genera un archivo JSON y este lo importa mediante loaddata.
Si, solo acabe aclarar que una vez tiene ese archivo JSON puedes modificarlo usando el modulo json para que cuando hagas el loaddata en la otra app lo tengas con la información modificada.

Cita:
Iniciado por forosanto Ver Mensaje
Si todo esta bien, solo debo cambiar la ID de ForeignKey, como te explicaba tengo dos modelos:

Anime y Enlace, enlace contiene el foreignkey a Anime, yo agregue todo el contenido manual a otra aplicación por lo tanto las ID son diferentes. Que opinas al respecto.
Depende, si es mucha información y la tarea se puede automatizar entonces puedes hacer un pequeño script para eso. De lo contrario si es una tarea que solamente vas a realizar una vez y son pocos datos es mas conveniente hacerlo a mano.

Como te recomendé allá arriba usa South para las migraciones. Es increíblemente fácil de usar.

Cita:
Iniciado por forosanto Ver Mensaje
Gracias.
De nada.
  #5 (permalink)  
Antiguo 09/04/2013, 01:07
 
Fecha de Ingreso: julio-2011
Mensajes: 62
Antigüedad: 12 años, 9 meses
Puntos: 5
Respuesta: Django pasar contenido nuevo Scrapy

Tu que opinas, acabo de aplicar dumpdata y south para unos modelos, por ahora me ha salido todo a poco. El gran problema como te mencione es que el PK es diferente, pero contiene el titulo y slug igual, será que conoces algún código para que con loaddata me relacione cada object con el titulo o slug?

Te agradezco y gracias.
  #6 (permalink)  
Antiguo 09/04/2013, 10:39
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Django pasar contenido nuevo Scrapy

Al proyecto con la versión antigua le voy a llamar A y al nuevo le voy a llamar B.

1.- Haz una copia del proyecto A.
2.- Aplica South a la copia del proyecto A.
3.- Cambia el schema de la copia del proyecto A a schema del proyecto B.
4.- Aplica South otra vez y con esto te migraría tu schema y tus datos.

Por ultimo puedes hacer loaddata y dumpdata para pasar los datos de la copia del proyecto A al proyecto B.

Etiquetas: django
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:53.