У меня есть программа, которая в данный момент читает из базы данных, которую можно найти здесь .У меня есть пользователи, которые выбирают конкретную запись, которую они хотят отобразить, поэтому команда SQL выполнит эту запись.Теперь у меня есть таблица, которая в настоящее время отображает эти записи, однако столбцы не соответствуют моему желанию, потому что я имею дело с длинными строками данных.
Я не пользуюсь расширенными библиотеками.Отображение моей таблицы примерно одинаково для некоторых таблиц, кроме таблиц, таких как поставщики, заказы, категории.Ширина каждого столбца слишком велика.Это занимает слишком много места.
Я думаю, что мой код в настоящее время берет самую длинную строку из всей таблицы и устанавливает ширину для каждого столбца.Вместо этого я хочу взять самую длинную строку для каждого столбца, а НЕ для всей таблицы, поэтому ширина каждого столбца определяется длиной строки (с небольшим дополнительным пространством, конечно) для этого столбца.
Вот мой код:
import sqlite3
def read_display(record):
database = 'data.db'
connection = sqlite3.connect(database)
c = connection.cursor()
# selects a table to display
sql = "SELECT * FROM {0}".format(record)
cursor.execute(sql)
conn.commit()
results = cursor.fetchall()
header = [i[0] for i in c.description]
data = [header] + list(tuple(results))
width = max((len(str(x)) for d in data for x in d))
for i, d in enumerate(data):
line = ' | '.join(str(x).ljust(width) for x in d)
print(line)
if i == 0:
print('-' * len(line))
Я пытался связываться с переменной width
, но, похоже, не могу понять это.Я попытался посмотреть на другие StackOverflow q, но они имеют дело с небольшим количеством данных, поэтому легче установить ширину.Эти данные содержат огромные строки.
Спасибо большое!