如何保持Snowflake连接存活直至所有SQL语句执行完成?
解决Snowflake连接执行多查询时提前关闭的问题
问题根源:你当前的代码在每次循环的finally块里调用了con.close(),导致第一个查询执行完成后连接就被关闭了,后续循环再使用这个已关闭的连接自然会抛出connection is closed错误。
修复方案一:将连接关闭操作移到循环外
把con.close()放到整个循环执行完毕后再执行,确保所有查询都能复用同一个连接:
query_list = [query1, query2, query3] try: for query in query_list: con.cursor.execute(query) finally: # 所有查询执行完再关闭连接 con.close()
修复方案二:使用上下文管理器(更推荐)
利用Python的上下文管理器with语句自动管理连接生命周期,无需手动调用close(),代码更简洁且能避免漏关连接的问题:
import snowflake.connector query_list = [query1, query2, query3] # 替换成你的实际连接参数 with snowflake.connector.connect( user='your_user', password='your_password', account='your_account', warehouse='your_warehouse', database='your_database', schema='your_schema' ) as con: for query in query_list: con.cursor.execute(query)
上下文管理器会在with代码块结束后自动关闭连接,无论代码块内是否出现异常。
内容的提问来源于stack exchange,提问作者Adhi cloud
相关产品推荐
相关产品推荐

