Python PrettyTable在同一行上打印表格

Python PrettyTable在同一行上打印表格,python,python-2.7,mysql-python,prettytable,Python,Python 2.7,Mysql Python,Prettytable,我正在使用PrettyTable“from_db_cursor”模块很好地打印我从sql请求中得到的响应。一切正常,我唯一的问题是,对于某些查询,我希望打印表,它们被附加到同一行,如下所示: countUnivers1: countUnivers2: countUnivers3: +----------+ +----------+ +----------+ | COUNT(*) | | COUNT(*) | | COUNT(*) | +----

我正在使用PrettyTable“from_db_cursor”模块很好地打印我从sql请求中得到的响应。一切正常,我唯一的问题是,对于某些查询,我希望打印表,它们被附加到同一行,如下所示:

countUnivers1:    countUnivers2:    countUnivers3:
+----------+      +----------+      +----------+
| COUNT(*) |      | COUNT(*) |      | COUNT(*) |
+----------+      +----------+      +----------+
| 1681943  |      |  51954   |      | 4140984  |
+----------+      +----------+      +----------+
但我无法找到如何做到这一点,这里是我目前使用的代码:

i = 0
tables = []
with open(output, 'w+') as file:
    file.write(str(current_time) + '\n')
    for query in QUERIES.items():
        cur.execute(query[1])
        table = from_db_cursor(cur)
        if not re.search('countUnivers' ,query[0]):
            file.write('\n' + query[0] + ':\n')
            file.write(str(table) + '\n')
        else:
            if i < 6:
                file.write(query[0] + ':\t')
                tables.append(str(table))
                i += 1
            elif i == 6:
                file.write('\n')
                for t in tables:
                    file.write(str(table) + '\t')
                i = 0
                tables = []
    file.write('\nDatabase:\n' + json.dumps(dbParams, indent=4) + '\n')
这里的查询是一个ORDERDICT,其中包含SQL请求:

('countUnivers1', "SELECT COUNT(*) \
                        FROM ourson_offer o \
                        WHERE o.cat LIKE '1%' \
                        AND CHARACTER_LENGTH(o.cat) = 7"),

就像这个。

文本是二维的:行+行中的字符。“table”是一个python字符串,其中有新行-它是一个文本!每行结束字符(CRLF、CR或LF,具体取决于操作系统/平台)后,将开始一个新行

您想要做的是将字符串的结构理解为文本并垂直对齐新块

def pad_垂直线(线、尺寸):
''长度正好为'size'的行列表。
如果需要,用空行扩展。
'''
原始行=列表(行)
断言大小>=len(原始行)
返回原始行+['']*(大小-长度(原始行))
def衬垫管路水平(管路):
''将线路连接到最长线路的长度。
'''
直线长度=最大值(对于直线中的直线,长度(直线))
返回[
line.ljust(行长度)
排队
]
def text_add(text1,text2,padding=''):
lines1=text1.splitlines()
lines2=text2.splitlines()
行计数=最大值(len(行1),len(行2))
def pad_管路(管路):
水平返回焊盘线(
垂直焊盘线(线、线计数)
)
返回'\n'。加入(
“”.连接(第1行+填充+第2行)
对于拉链中的第1行、第2行(衬垫线(第1行)、衬垫线(第2行))
)
这样使用:

countUnivers1:    countUnivers2:    countUnivers3:
+----------+      +----------+      +----------+
| COUNT(*) |      | COUNT(*) |      | COUNT(*) |
+----------+      +----------+      +----------+
| 1681943  |      |  51954   |      | 4140984  |
+----------+      +----------+      +----------+
text1=''\
第1项:
+----------+
|计数(*)|
+-------
| 1681943  |
+----------+
'''
text2=''\
第2项:
+----------+
|计数(*)|
+----------+
|  51954   |
+----------+
加上
评论
'''
打印文本\u添加(文本1、文本2、填充='\t')
countUnivers1:countUnivers2:
+----------+    +----------+
|计数(*)| |计数(*)|
+-------        +----------+
| 1681943  |    |  51954   |
+----------+    +----------+
加上
评论