提示
本页面仅包含st.connections.SnowparkConnection类。要深入了解在Streamlit应用程序中创建和管理数据连接,请阅读连接到数据。
弃用通知
st.connections.SnowParkConnection 在版本 1.28.0 中已被弃用。请改用 st.connections.SnowflakeConnection。
使用 snowflake.snowpark.session.Session 连接到 Snowpark。初始化使用
st.connection("
除了提供对Snowpark Session的访问外,SnowparkConnection还支持使用query("...")进行直接SQL查询,以及使用with conn.safe_session():进行线程安全访问。有关更多信息,请参见下面的方法。SnowparkConnections应始终使用st.connection()创建,不要直接初始化。
注意
我们不期望这个版本的SnowparkConnection能够在具有许多并发用户的应用程序中很好地扩展,因为在高压下会在单个底层Session对象上发生锁争用。
| 类描述[来源] | |
|---|---|
st.connections.SnowparkConnection(connection_name, **kwargs) | |
| 方法 | |
query(sql, ttl=None) | 运行一个只读的SQL查询。 |
reset() | 重置此连接,以便下次使用时重新初始化。 |
以线程安全的方式获取底层的Snowpark会话。 | |
| 属性 | |
访问底层的Snowpark会话。 | |
运行一个只读的SQL查询。
此方法实现了查询结果缓存(缓存行为与使用@st.cache_data相同)以及简单的错误处理/重试。
注意
未指定ttl的查询将无限期缓存。
| 函数签名[source] | |
|---|---|
SnowparkConnection.query(sql, ttl=None) | |
| 参数 | |
sql (str) | 要执行的只读SQL查询。 |
ttl (float, int, timedelta or None) | 缓存中保留结果的最大秒数,如果缓存结果不应过期,则为None。默认值为None。 |
| 返回 | |
(pandas.DataFrame) | 查询结果,格式化为pandas DataFrame。 |
示例
import streamlit as st
conn = st.connection("snowpark")
df = conn.query("SELECT * FROM pet_owners")
st.dataframe(df)
重置此连接,以便下次使用时重新初始化。
当连接变得陈旧、认证令牌过期或在类似情况下,重新初始化可能会修复断开的连接时,此方法可能很有用。请注意,某些连接方法可能已经在它们的错误处理代码中使用了reset()。
| 函数签名[source] | |
|---|---|
SnowparkConnection.reset() | |
| 返回 | |
(None) | 无描述 |
示例
import streamlit as st
conn = st.connection("my_conn")
# Reset the connection before using it if it isn't healthy
# Note: is_healthy() isn't a real method and is just shown for example here.
if not conn.is_healthy():
conn.reset()
# Do stuff with conn...
以线程安全的方式获取底层的Snowpark会话。
由于Snowpark会话的操作不是线程安全的,我们需要在使用会话时小心,特别是在Streamlit应用程序的上下文中,每个脚本运行都在自己的线程中进行。使用contextmanager模式来确保对此连接的基础会话的访问是以线程安全的方式进行的。
有关如何使用Snowpark会话的信息可以在Snowpark文档中找到。
| 函数签名[source] | |
|---|---|
SnowparkConnection.safe_session() |
示例
import streamlit as st
conn = st.connection("snowpark")
with conn.safe_session() as session:
df = session.table("mytable").limit(10).to_pandas()
st.dataframe(df)
访问底层的Snowpark会话。
注意
Snowpark 会话不是线程安全的。使用此方法的用户有责任确保以线程安全的方式访问此方法返回的会话。对于大多数用户,我们建议使用线程安全的 safe_session() 方法和 with 块。
有关如何使用Snowpark会话的信息可以在Snowpark文档中找到。
| 函数签名[source] | |
|---|---|
SnowparkConnection.session |
示例
import streamlit as st
session = st.connection("snowpark").session
df = session.table("mytable").limit(10).to_pandas()
st.dataframe(df)
还有问题吗?
我们的 论坛 充满了有用的信息和Streamlit专家。