2012-02-07 58 views
6

Estoy tratando de utilizar una clase (ADNS-python), que está a la espera de una lista en el formato:Python formato de lista de MySQLdb

domain_names = ["google.com", "yahoo.com"] 

Esto funciona cuando declaro la lista de esa manera manual. Sin embargo, estoy tratando de usar una lista devuelta por mysql usando python-mysqldb.

Cuando miro lo que está siendo regresar de MySQL usando:

type(mysql_rows) 

Esto muestra también como una lista, pero cuando ver el resultado:

print(mysql_rows) 

puedo ver la lista está en el formato:

[('google.com',), ('yahoo.com',)] 

he intentado forzar la salida a una lista de nuevo utilizando la lista (mysql_rows), que no funcionaba. He intentado analizar el texto de forma manual para que se vea como la lista usando:

text_rows = "[" + ", ".join'"%s"' % i for i in mysql_rows = "]" 

Qué muestra entonces como el formato correcto, pero es una cadena no es una lista de lo que no funciona bien.

Estos son mis primeros días aprendiendo Python, así que lo siento si esta es una pregunta obvia/estúpida.

Gracias

Respuesta

4

MySQL devuelve una lista de tuplas. Cada tupla es una fila de resultados en su conjunto de resultados. Si desea una lista de sólo el primero "columna" del en el resultado, intente esto:

first_column = [x[0] for x in mysql_rows] 
6

La lista es una lista de tuplas. Un simple

lst = [x for x, in mysql_rows] 

debería ser suficiente.

+0

Tu respuesta fue totalmente correcta también - Seleccioné secretmike porque era un min antes. Gracias a ti también. – direct00

+1

@ direct00: Bastante :) ¡Me alegra ayudar, diviértete! –