0

我是 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()

如果我运行这段代码,第一次打印没问题,但第二次打印语句返回 []。

如果我只运行两个打印语句中的一个,我每次都会得到一个结果。有人可以解释我为什么吗?

4

1 回答 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]))
于 2019-05-01T16:34:41.113 回答