为什么我只能使用一次查询结果?

问题描述 投票:0回答:1

我是SQL和psycopg2的新手。我正在玩一下,试着找到我们如何显示查询的结果。我有一个小脚本,我连接到数据库并创建一个游标来运行查询。

from psycopg2 import connect

conn = connect(host="localhost", user="postgres", dbname="portfolio",
               password="empty")

cur = conn.cursor()

cur.execute("SELECT * FROM portfolio")

for record in cur:
    print("ISIN: {}, Naam: {}".format(record[0], record[1]))

print(cur.fetchmany(3))

cur.close()
conn.close()

如果我运行此代码,第一次打印很好,但第二个print语句返回[]。

如果我只运行两个print-statement中的一个,我每次都得到一个结果。有人能解释一下为什么吗?

python postgresql psycopg2
1个回答
3
投票

游标循环遍历结果并一次返回一个。当它返回所有这些时,它就不能再返回了。这就像你循环文件中的行(一旦到达文件末尾就没有行)或甚至循环遍历列表(在最后一个列表后列表中没有更多条目)。

如果你想在Python中操作结果,你应该将它们读入一个列表,然后你可以随意遍历,或搜索,排序等,或完全随机访问。

cur.execute("SELECT * FROM portfolio")

result = cur.fetchall()

for record in result:
    print("ISIN: {}, Naam: {}".format(record[0], record[1]))

print(result[0:3]))
© www.soinside.com 2019 - 2024. All rights reserved.