如何在Python中保持Snowflake连接

x7yiwoj4  于 2024-01-05  发布在  Python
关注(0)|答案(1)|浏览(369)

我在Snowflake中有一个数据库,我使用Snowflake's Python Connector访问数据库并从Flask服务器进行数据库查询,如下所示:

  1. ctx = snowflake.connector.connect(
  2. user='username',
  3. password='pass',
  4. account='account',
  5. client_session_keep_alive=True
  6. )
  7. cs = ctx.cursor()
  8. try:
  9. cs.execute("SELECT current_version()")
  10. one_row = cs.fetchone()
  11. print("Successfully connected to snowflake version: {}".format(one_row[0]))
  12. cs.close()
  13. except Exception as e:
  14. print("Snowflake connection error: {}".format(e))
  15. cs.close()

字符串
我将snowflake连接会话定义为一个全局ctx变量,可以从任何Flask API函数访问。
启动Flask服务器后,一切正常,但如果连续几个小时没有API调用,则会抛出错误:

  1. snowflake.connector.errors.ProgrammingError: 390114 (08001): Authentication token has expired. The user must authenticate again.


正如你所看到的,我在Snowflake connect API中保留了client_session_keep_alive=True参数来保持会话活动,但不知何故仍然失败。我探索了这个问题,但没有得到任何结论性的信息。所以我想知道如何保持数据库连接会话活动,或者我必须为每个查询创建新的连接会话吗?
任何建议都会很有帮助。

lg40wkob

lg40wkob1#

根据这个community note,除了不时地发出伪sql之外,你没有什么可以做的,但是我注意到有一个CLIENT_SESSION_KEEP_ALIVE_HEARTBEAT_FREQUENCY参数,你可以先测试see this

相关问题