Không cần thư viện bên ngoài. In ra dữ liệu với tên cột. Tất cả các dòng có biến 'cột' có thể bị loại bỏ nếu bạn không cần tên cột.
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)
Đây là kết quả:
+--------+---------+---------------+------------+------------+
| 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 |
+--------+---------+---------------+------------+------------+
Điều kỳ diệu nằm ở cột thứ ba của mỗi cursor.description
dòng (được gọi là cd[2]
trong mã). Cột này thể hiện độ dài tính bằng ký tự của giá trị dài nhất. Do đó, chúng tôi đặt kích thước cột được hiển thị càng lớn giữa cột đó và độ dài của chính tiêu đề cột (max(cd[2], len(cd[0]))
).