sql >> Base de Datos >  >> RDS >> Mysql

Imprimir resultados en formato MySQL con Python

No hay necesidad de una biblioteca externa. Imprime los datos con los nombres de las columnas. Todas las líneas con la variable 'columnas' se pueden eliminar si no necesita los nombres de las columnas.

sql = "SELECT * FROM someTable"
cursor.execute(sql)
conn.commit()
results = cursor.fetchall()

widths = []
columns = []
tavnit = '|'
separator = '+' 

for cd in cursor.description:
    widths.append(max(cd[2], len(cd[0])))
    columns.append(cd[0])

for w in widths:
    tavnit += " %-"+"%ss |" % (w,)
    separator += '-'*w + '--+'

print(separator)
print(tavnit % tuple(columns))
print(separator)
for row in results:
    print(tavnit % row)
print(separator)

Esta es la salida:

+--------+---------+---------------+------------+------------+
| ip_log | user_id | type_id       | ip_address | time_stamp |
+--------+---------+---------------+------------+------------+
| 227    | 1       | session_login | 10.0.0.2   | 1358760386 |
| 140    | 1       | session_login | 10.0.0.2   | 1358321825 |
| 98     | 1       | session_login | 10.0.0.2   | 1358157588 |
+--------+---------+---------------+------------+------------+

La magia reside en la tercera columna de cada cursor.description línea (llamada cd[2] en el código). Esta columna representa la longitud en caracteres del valor más largo. Por lo tanto, dimensionamos la columna mostrada como la mayor entre eso y la longitud del encabezado de la columna (max(cd[2], len(cd[0])) ).