私はPostgresクエリを実行し、その結果をダッシュボードに送るためのかなり簡単なPythonコードスニペットを持っています。私は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;"""
が、私は彼らが変更する必要があるにもかかわらず、同じ結果を得続けます。 conn.close()
でループにpsycopg2.connect()
行を移動すると、すべて正常に動作します。しかし、接続とcursor docsによると、私は同じカーソル(と、したがって、接続)を使用し続けることができるはずです。
これは、Postgresがクライアント接続ごとにクエリをキャッシュしていることを意味しますか?
'sleep 'の直前でカーソルを'閉じる'べきでしょう。 –
私はこれを試してみましたが、これはうまくいっていませんでした。「デルを実行するたびにではなく、今すぐカーソルを閉じる。この時点からカーソルを使用できなくなる.InterfaceErrorは、カーソル" –