【发布时间】:2019-05-02 19:53:55
【问题描述】:
我有一个程序当前从数据库中读取,可以在here 找到。我让用户选择他们想要显示的特定记录,以便 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,但它们处理的数据很少,因此设置宽度更容易。该数据包含巨大的字符串。
非常感谢!
【问题讨论】:
标签: python sql database sqlite