如何在Python中保持Snowflake连接

x7yiwoj4  于 4个月前  发布在  Python
关注(0)|答案(1)|浏览(66)

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

ctx = snowflake.connector.connect(
user='username',
password='pass',
account='account',
client_session_keep_alive=True
)
cs = ctx.cursor()

try:
    cs.execute("SELECT current_version()")
    one_row = cs.fetchone()
    print("Successfully connected to snowflake version: {}".format(one_row[0]))
    cs.close()
except Exception as e:
    print("Snowflake connection error: {}".format(e))
    cs.close()

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

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

相关问题