gpt4 book ai didi

python - SQLite Python 按行打印?

转载 作者:太空宇宙 更新时间:2023-11-03 19:06:02 26 4
gpt4 key购买 nike

下午,我尝试使用以下代码从数据库中检索座位号

        cur.execute("SELECT * FROM seats")
while True:
row = cur.fetchone()
if row == None:
break
print row[0]

但是当我这样做时,它会每行打印出每个单独的记录,如下所示:

A1
A2
B3 etc..

但我希望每一行都用相同的字母打印出来(如果有意义的话),例如:

A1 A2 A3 A4 A5 A6 A7 A8
B1 B2 B3 B4 B5 B6 B7

但我似乎无法这样理解?我该如何去做呢?

最佳答案

使用itertools.groupby() tool :

from itertools import groupby

for letter, rows in groupby(cur, key=lambda r: r[0][0]):
print ' '.join([r[0] for r in rows])

groupby() 函数循环遍历 cur 中的每一行,获取第一列的第一个字母,并为您提供一个包含每个 (字母,行) 值。 rows 值是另一个可迭代的值,您可以对其进行循环(例如使用 for 循环)以列出具有该第一个字母的所有行。

这确实依赖于已经排序的行。如果您的行在第一个字母之间交替:

A1
A2
B1
B2
A3
A4

它将把它们打印为单独的组:

A1 A2
B1 B2
A3 A4

您可能需要在查询中添加 ORDER BY firstcolumnname 排序指令以确保正确分组。

这是我创建测试数据库时看到的内容:

>>> cur.execute("SELECT * FROM seats ORDER BY code")
<sqlite3.Cursor object at 0x10b1a8730>
>>> for letter, rows in groupby(cur, key=lambda r: r[0][0]):
... print ' '.join([r[0] for r in rows])
...
A1 A2 A3 A4 A5 A6 A7 A8
B1 B2 B3 B4 B5 B6 B7 B8
C1 C2 C3 C4 C5 C6 C7 C8

关于python - SQLite Python 按行打印?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14686212/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com