Mysql
 sql >> Base de données >  >> RDS >> Mysql

Imprimer les résultats au format MySQL avec Python

Il n'y a pas besoin d'une bibliothèque externe. Le imprime les données avec les noms de colonne. Toutes les lignes avec la variable 'columns' peuvent être éliminées si vous n'avez pas besoin des noms de colonnes.

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)

Voici le résultat :

+--------+---------+---------------+------------+------------+
| 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 magie réside dans la troisième colonne de chaque cursor.description ligne (appelée cd[2] dans le code). Cette colonne représente la longueur en caractères de la valeur la plus longue. Ainsi, nous dimensionnons la colonne affichée comme la plus grande entre cela et la longueur de l'en-tête de colonne lui-même (max(cd[2], len(cd[0])) ).