我想从我的数据库打印数据在一个更好的格式,这是一个游戏,我做的。这是代码:
def read_all_tables(self):
self.cursor.execute('SELECT Name, Gender, Age, Score, Date, Time FROM Link JOIN Scores ON Score_ID = Scores.ID JOIN Player ON Player_ID = Player.id ORDER BY Score DESC')
Data = self.cursor.fetchall()
for Row in Data:
print()
for record in range(len(Row)):
print(Row[record], end=" ")
输出为:
HAMMAD MALE 18 900 07/01/18 13:07:02
HAMMAD MALE 18 850 07/01/18 13:30:11
INDERVEER MALE 18 750 07/01/18 13:35:46
HAMMAD MALE 18 500 07/01/18 13:08:29
HAMMAD MALE 18 400 07/01/18 14:07:29
PARSA MALE 18 300 07/01/18 13:36:58
HADIA FEMALE 19 300 07/01/18 14:09:37
MANAAL FEMALE 18 100 07/01/18 13:51:40
MICHAL MALE 18 0 07/01/18 13:42:41
HAMMAD MALE 18 0 07/01/18 13:44:04
HADIA FEMALE 19 0 07/01/18 13:45:51
MANAAL FEMALE 18 0 07/01/18 13:53:02
JACK WEIRD 21 0 07/01/18 13:53:49
HAMMAD MALE 18 0 07/01/18 13:54:44
HAMMAD MALE 18 0 07/01/18 13:56:08
MANAAL FEMALE 18 0 07/01/18 13:57:39
PARSA MALE 18 0 07/01/18 13:58:25
HAMMAD MALE 18 0 07/01/18 13:59:08
HAMMAD MALE 18 0 07/01/18 14:10:37
我如何对齐它们并有一个列标题?我不想使用任何图书馆。
3条答案
按热度按时间1mrurvl11#
使用字符串格式化功能:
输出量:
注意事项
在这种方法中,我们硬编码列的宽度。为了动态调整列宽,我们必须做更多的工作。我希望这对你有用。
更新
为了动态调整宽度,我们需要遍历数据两次:第一次确定每列的最大宽度,第二次打印。
输出量:
如果您对结果满意,可以删除DEBUG行。他们在那里展示代码是如何工作的。
ws51t4hk2#
对于标题,只需选择所需的文本,如
要格式化数据,请使用printf()函数(请参阅https://sqlite.org/lang_corefunc.html#printf),如
(根据需要进行调整。)
pn9klfpd3#
公认的答案对我不起作用,所以我自己做了一个类似的。
result
替换为Data
。row_factory
,所以在执行SELECT * tables
时,您可以使用标题,并将它们插入表的顶行。这就是前三行所做的。代码的其余部分:
0
* 第一行项目的数量(也是标题)填充它们。None
,并添加偏移量。您可以手动操作,但不建议手动操作,如果长度发生变化怎么办: