[PyVigo] Presentación y consulta.

Miguel González Álvarez migonzalvar at gmail.com
Tue Jan 27 12:58:42 CET 2015


2015-01-27 11:35 GMT+01:00 aLeX <alex.nunez at gmail.com>:

> Buenas a todos,
> Antes de nada, decir que me llamo Alex, trabajo con Luis y que "por su
> culpa" estoy en esta lista de correo. No sé programar, solo intento hacer
> alguna chapucilla como hobby y curiosidad. El tema es que como Luis es
> bastante insistente con el tema python pues al final me picó el gusanillo y
> estoy haciendo alguna cosilla y de ahí mi consulta:
>
>
Bienvenido!


> Para resumir: Estoy capturando datos de una web e insertándolos en una
> base de datos. El problema no  es crítico y tengo un "workaround" pero me
> gustaría solucionarlo de otra manera. Bueno, empiezo con el tostón.
>
> Uso python 3.4. Para capturar la información de la web utilizo la librería
> lxml y en las pruebas que estoy haciendo capturo el texto que hay en todos
> los <a></a> creando una lista como ['hola', 'adios']. Trás capturar toda la
> info trato de meterla en una base de datos mysql (con mysql.connector) y
> ahí me encuentro el problema:
>
> AttributeError: 'MySQLConverter' object has no attribute
> '__elementunicoderesult_to_mysql'
>
> Está claro que la codificación de la variable no le gusta al MySQL y dice
> que nanai. Pues e intentado mil maneras distintas de cambiar la
> codificación sin éxito, así que al final lo que hago es "convertirla" de un
> modo "cutre" usando una funcion que lo que hace es deshacer la lista (join)
> y luego volviéndola a crear (split). Visualmente (print) queda igual pero
> la codificación cambia y gracias a eso ya me deja insertarla correctamente
> en la base de datos.
>
>
Como dices después, la parte de tu código relevante seguro que ayuda.

Según entiendo yo, el problema consiste en como guardar una lista de Python
en un campo de tipo texto MySQL.

Este proceso de codificación se llama *serialización*. Existen muchísimas
opciones siendo una de las más populares utilizar JSON:

>>> import json
>>> l = ['hola', 'adios']
>>> type(l)
<class 'list'>
>>> s = json.dumps(l)
>>> s
'["hola", "adios"]'
>>> type(s)
<class 'str'>
>>> unserialize = json.loads(s)
>>> unserialize
['hola', 'adios']
>>> l == unserialize
True



> Sabéis como solucionarlo más limpiamente? alguna experiencia en algo
> similar?
>
> Espero haberme explicado bien y que entendáis mi problema. Si es de ayuda
> puedo poner parte del código o lo que sea, solo os pido que no seais malos
> xD
>
> Un saludo!
>
> _______________________________________________
> Asociación Python España: http://www.es.python.org/
> Python Vigo: http://www.python-vigo.es/
> Vigo mailing list
> Vigo at lists.es.python.org
> https://lists.es.python.org/listinfo/vigo
>



-- 
Miguel González
migonzalvar at gmail.com
PGP ID: 0C63761BEEBD05D3
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.es.python.org/pipermail/vigo/attachments/20150127/de287c13/attachment.html>


More information about the Vigo mailing list