我在这里遇到问题:
conn = psycopg2.connect(conn_string)
cursor = conn.cursor()
sql = """
SELECT DISTINCT (tenor_years)
FROM bond_pnl
WHERE country = '%s'
""" % country
cursor.execute(sql)
print(cursor.fetchall())
print(cursor.rowcount)
它提供以下输出:
[]
11
表示cursor.rowcount为11但cursor.fetchall()为空列表。我已经尝试过这样做了:
conn.set_session(readonly=True, autocommit=True)
以及此解决方案:Click to see
对此有任何帮助将不胜感激。
编辑:刚刚遇到另一件事,这个代码第一次执行时,工作正常。但是再次执行它(第二次,第三次,......执行)会产生上述行为。
答案 0 :(得分:0)
在尝试不同的解决方案后,我发现当我在"调试模式"中执行它时,问题中描述的问题就出现了。在pycharm。但另一方面,如果我执行"运行模式"在pycharm中,它返回正确的预期输出(包含11个元素的列表):
[a,b,c,d,e,f,g,h,i,j,k]
不确定它的确切原因但不知何故,当在"调试模式"中运行时光标在某处断开。 如果有人描述确切的原因,我将非常感激。
答案 1 :(得分:0)
我也遇到了同样的问题。我想通了, 可能是在调试时,我们允许在建立连接后的一些时间 #conn = psycopg2.connect(conn_string) #cursor = conn.cursor()
当我们点击下一行(包含查询)的执行按钮时,数据库超时并返回空列表。
如果有人对发生这种情况的原因有任何其他逻辑,请分享。