我是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中操作结果,你应该将它们读入一个列表,然后你可以随意遍历,或搜索,排序等,或完全随机访问。
cur.execute("SELECT * FROM portfolio")
result = cur.fetchall()
for record in result:
print("ISIN: {}, Naam: {}".format(record[0], record[1]))
print(result[0:3]))