Python - 如何填充 mysql 表的输出

标签 python mysql

我正在尝试使用 print 函数打印表格中的每一行以打印每一行。

select_stmt = "SELECT user,password FROM account"

mycursor.execute(select_stmt)
myresult = mycursor.fetchall()

for row in myresult:
    print (row)

目前它以一种随意的方式打印:

(None, 'A***9****')
(None, None)
('usertest', 'pwtest')

如何填充每一列以使其看起来更清晰?谢谢

最佳答案

两列

鉴于两列永远不会超过 24 个字符,您可以使用例如:

for user, pwd in myresult:
    print('{: <20} {}'.format(user, pwd))

或者如果事先不知道,我们可以先确定第一列的最大大小:

len_user = max(map(lambda x: len(str(x[0])), myresult))
for user, pwd in myresult:
    print('{} {}'.format(str(user).ljust(len_user), pwd))

对于示例数据,这会产生:

>>> len_user = max(map(lambda x: len(str(x[0])), myresult))
>>> for user, pwd in myresult:
...     print('{} {}'.format(str(user).ljust(len_user), pwd))
... 
None     A***9****
None     None
usertest pwtest

您可以在格式中的两个 {} 之间添加更多间距,以增加元素之间的间距,例如:

>>> for user, pwd in myresult:
...     print('{}    {}'.format(str(user).ljust(len_user), pwd))
... 
None        A***9****
None        None
usertest    pwtest

多列

对于多列,我们可以按照相同的过程,使用numpy计算列最大值:

import numpy as np

lens = np.max([[len(str(xi)) for xi in x] for x in myresult], axis=0)
myformat = ' '.join(['{}']*len(lens))

for col in myresult:
    print(myformat.format(*map(str.ljust, map(str, col), lens)))

关于Python - 如何填充 mysql 表的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52727547/

相关文章:

python - 如何在 Windows XP 上使用 pip 安装 selenium 包?

python - 使用 Tensorflow 保存检查点

python - python 中的正则表达式匹配和替换

c++ - mysql_query() 很慢

尝试更新按钮标签文本时 Python GUI 卡住或关闭

Python Pint 在乘法时不会合并相同数量的单位

Java Web 应用程序无法连接到 AWS RDS 数据库实例

mysql - 如何不选择带有链接表的行

php - 为什么 php 不能识别这个查询?

mysql - 在mysql中的单个过程中插入,更新