Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Ergebnisse im MySQL-Format mit Python drucken

Eine externe Bibliothek ist nicht erforderlich. Der druckt die Daten mit den Spaltennamen aus. Alle Zeilen mit der Variable 'columns' können eliminiert werden, wenn Sie die Spaltennamen nicht benötigen.

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)

Dies ist die Ausgabe:

+--------+---------+---------------+------------+------------+
| 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 |
+--------+---------+---------------+------------+------------+

Die Magie liegt in der dritten Spalte jeder cursor.description Zeile (genannt cd[2][code> im Code). Diese Spalte repräsentiert die Länge in Zeichen des längsten Werts. Daher bemessen wir die angezeigte Spalte als die größere zwischen dieser und der Länge der Spaltenüberschrift selbst (max(cd[2], len(cd[0])) ).