example - python 2.7 mysql python 1.2 4b4
Python: use mysqldb para importar una tabla MySQL como un diccionario? (3)
¿Alguien sabe cómo puedo usar mysqldb para convertir una tabla MySQL, con muchas filas, en una lista de objetos de diccionario en Python?
Me refiero a convertir un conjunto de filas de MySQL, con las columnas ''a'', ''b'' y ''c'', en un objeto de Python que se ve así:
data = [ { ''a'':''A'', ''b'':(2, 4), ''c'':3.0 }, { ''a'':''Q'', ''b'':(1, 4), ''c'':5.0 }, { ''a'':''T'', ''b'':(2, 8), ''c'':6.1 } ]
Gracias :)
Esta es una publicación antigua, y aunque esta respuesta no es exactamente lo que el OP estaba buscando, está muy en la misma línea. En lugar de generar una lista de diccionarios, genera un diccionario de listas:
También pensé en proporcionar el código completo para generar el diccionario:
import MySQLdb
import MySQLdb.cursors
dict_serv = MySQLdb.connect(host = ''localhost'', user = ''root'', passwd = ''mypassword'', cursorclass = MySQLdb.cursors.DictCursor)
with dict_serv as c:
c.execute("USE mydb")
c.execute("SELECT col1, col2 FROM mytable WHERE id = ''X123''")
# Save the dictionary to a separate variable
init_dict = c.fetchall()
# This line builds the column headers
sql_cols = [ col[0] for col in c.description ]
# This is a list comprehension within a dictionary comprehension
# which builds the full dictionary in a single line.
sql_dict = { k : [ d[k] for d in init_dict ] for k in sql_cols }
Cuyos rendimientos:
{ ''col1'': [''apple'',''banana''], ''col2'':[''red'',''yellow''] }
MySQLdb tiene una clase de cursor separada para esto, el DictCursor. Puede pasar la clase de cursor que desea utilizar a MySQLdb.connect ():
import MySQLdb.cursors
MySQLdb.connect(host=''...'', cursorclass=MySQLdb.cursors.DictCursor)
Si necesita utilizar más cursores y solo uno necesita ser MySQLdb.cursors.DictCursor, puede hacer lo siguiente:
import MySQLdb
db = MySQLdb.connect(host=''...'', db=''...'', user=''...t'', passwd=''...'')
list_cursor = db.cursor()
dict_cursor = db.cursor(MySQLdb.cursors.DictCursor)