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

时间:2019-05-01 16:24:22

标签: python postgresql psycopg2

我是SQL和psycopg2的新手。我在玩耍,尝试找到我们如何显示查询结果。我有一个小脚本,可在其中建立与数据库的连接并创建一个游标以运行查询。

where (department in ('CT', 'NJ', 'NY') and :department = 'NY')
   or (department = 'CA'                and :department = 'CA')

如果我运行此代码,则第一次打印可以,但是第二个打印语句返回[]。

如果仅运行两个打印语句之一,则每次都会得到结果。 有人可以解释一下为什么吗?

1 个答案:

答案 0 :(得分:3)

光标在结果上循环并一次返回一个。当所有这些都返回时,它不再返回。这就像当您循环遍历文件中的行(到达文件末尾时不再有行)甚至循环遍历列表(最后一个条目之后的列表中也没有条目)时一样。 / p>

如果要使用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]))