sql >> Database teknologi >  >> RDS >> Mysql

Udskriv resultater i MySQL-format med Python

Der er ikke behov for et eksternt bibliotek. Udskriver dataene med kolonnenavnene. Alle linjer med variablen 'kolonner' kan elimineres, hvis du ikke har brug for kolonnenavnene.

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)
 

Dette er output:

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

Magien ligger i den tredje kolonne i hver cursor.description linje (kaldet cd[2] i koden). Denne kolonne repræsenterer længden i tegn af den længste værdi. Derfor størrelser vi den viste kolonne som den større mellem det og længden af ​​selve kolonneoverskriften (max(cd[2], len(cd[0])) ).



  1. Omdøb tabel med mellemrum mysql

  2. Konverter 'tid' til 'datetime2' i SQL Server (T-SQL-eksempler)

  3. Sådan får du sidste 12 måneders data i MySQL

  4. Skal jeg normalisere min DB eller ej?