2
我有一個非常簡單的Python代碼片段來運行Postgres查詢,然後將結果發送到儀表板。我正在使用psycopg2
來定期運行相同的查詢。現在我們不必擔心循環機制。postgres緩存我的查詢?
conn = psycopg2.connect(<connection info>)
while True:
# Run query and update dashboard
cur = conn.cursor()
cur.execute(q_tcc)
query_results = cur.fetchall()
update_dashboard(query_results)
time.sleep(5)
僅供參考,實際的查詢是:
q_tcc = """SELECT client_addr, application_name, count(*) cnt FROM pg_stat_activity
GROUP BY client_addr, application_name ORDER BY cnt DESC;"""
當我運行它,我不斷收到即使它們應該被改變了相同的結果。如果我將psycopg2.connect()
行移動到conn.close()
的循環中,一切正常。根據連接和cursor docs,但是,我應該能夠一直使用相同的光標(並因此連接)。
這是否意味着Postgres在每個客戶端連接的基礎上緩存我的查詢?
你應該在'sleep'之前關閉你的光標。 –
我試過沒有成功,與文檔一致:「現在關閉遊標(而不是每次執行del時),遊標將從此處不可用;如果有任何操作嘗試執行,則會引發InterfaceError光標」 –