如何使用 Psycopg2 和 Postgresql 在新行上打印每一行

How to print each row on a new line using Psycopg2 and Postgresql

我写了一个 Python 小程序,使用 Psycopg2 按名字或姓氏查询 Postgresql 数据库。如果我有多个同名条目,除了格式化之外一切都工作正常。例如,如果只有一个"Michael",那么它会正常显示在一行中,但是如果有四个名为"Dan"的人,他们就会并排显示。我想在每个人之后换行,以便格式看起来正确,但我做不到。

这是我正在使用的查询:

lname = input("Enter First Name: ").upper()

                    print ("\nFirstName    LastName     Office#            Fax#             Cell#")
                    print ("----------- --------- ---------------  ----------------  ---------------")
                    query = "SELECT rtrim(firstname, ' '), rtrim(lastname, ' '), rtrim(officephone, ' '), rtrim(faxnumber, ' '), rtrim(cellphone, ' ') FROM employees where firstname = '" + str(lname) + "';"
                    cur.execute(query)
                    results = cur.fetchall()
                    print(results)
                    print ("\n")

我不知道要在我的查询中输入什么,以便它会在每个人之后换行。任何帮助都会很棒!

fetchall() returns 一个列表。您可以遍历列表并打印结果。

for result in results:
    print(result)

您的调用 results = cur.fetchall() 只是将所有检索到的数据放入列表中。调用 print(results) 不会在单独的行上打印所有项目:

>>> b=((1,2,3),(4,5,6))
>>> print(b)
((1, 2, 3), (4, 5, 6))

您需要遍历它们:

>>> b=((1,2,3),(4,5,6))
>>> print(b)
((1, 2, 3), (4, 5, 6))
>>> for r in b:
...  print(r)
... 
(1, 2, 3)
(4, 5, 6)