Connect Streamlit to Neon
Introduction
本指南解释了如何从Streamlit安全访问Neon数据库。Neon是一个完全托管的无服务器PostgreSQL数据库,它分离了存储和计算,以提供即时分支和自动扩展等功能。
Prerequisites
-
您的Python环境中必须安装以下包:
streamlit>=1.28 psycopg2-binary>=2.9.6 sqlalchemy>=2.0.0push_pin 注意
您可以使用
psycopg2代替psycopg2-binary。然而,构建Psycopg需要一些先决条件(如C编译器)。要在Community Cloud上使用psycopg2,您必须在存储库根目录的packages.txt文件中包含libpq-dev。psycopg2-binary是一个独立的包,适用于测试和开发。 -
您必须拥有一个Neon账户。
-
你应该对
st.connection和Secrets management有基本的了解。
Create a Neon project
如果您已经有一个想要使用的Neon项目,您可以跳到下一步。
-
登录到Neon控制台并导航到Projects部分。
-
如果您看到提示输入项目名称,请跳到下一步。否则,点击“新建项目”按钮以创建一个新项目。
-
输入“Streamlit-Neon”作为您的项目名称,接受其他默认设置,然后点击“创建项目”。
在Neon使用一个现成的
neondb数据库创建您的项目后,您将被重定向到项目的快速启动页面。 -
点击左侧边栏中的“SQL Editor”。
-
将输入区域中的文本替换为以下代码,并点击“运行”以将示例数据添加到您的项目中。
CREATE TABLE home ( id SERIAL PRIMARY KEY, name VARCHAR(100), pet VARCHAR(100) ); INSERT INTO home (name, pet) VALUES ('Mary', 'dog'), ('John', 'cat'), ('Robert', 'bird');
Add the Neon connection string to your local app secrets
-
在您的Neon项目中,点击左侧边栏中的“仪表板”。
-
在“连接详情”板块中,找到您的数据库连接字符串。它应该类似于这样:
postgresql://neondb_owner:xxxxxxxxxxxx@ep-adjective-noun-xxxxxxxx.us-east-2.aws.neon.tech/neondb?sslmode=require -
如果你的应用程序根目录中还没有
.streamlit/secrets.toml文件,请创建一个空的secrets文件。 -
复制您的连接字符串并将其添加到您的应用程序的
.streamlit/secrets.toml文件中,如下所示:# .streamlit/secrets.toml [connections.neon] url="postgresql://neondb_owner:xxxxxxxxxxxx@ep-adjective-noun-xxxxxxxx.us-east-2.aws.neon.tech/neondb?sslmode=require"priority_high 重要
将此文件添加到
.gitignore中,不要将其提交到您的GitHub仓库!
Write your Streamlit app
-
将下面的代码复制到您的 Streamlit 应用程序中并保存。
# streamlit_app.py import streamlit as st # 初始化连接。 conn = st.connection("neon", type="sql") # 执行查询。 df = conn.query('SELECT * FROM home;', ttl="10m") # 打印结果。 for row in df.itertuples(): st.write(f"{row.name} has a :{row.pet}:")上面的
st.connection对象处理密钥检索、设置、查询缓存和重试。默认情况下,
query()结果会被缓存且不会过期。将ttl参数设置为"10m"可确保查询结果缓存不超过 10 分钟。您还可以设置ttl=0来禁用缓存。了解更多信息,请参阅 Caching。 -
运行你的 Streamlit 应用。
streamlit run streamlit_app.py如果一切顺利(并且你使用了我们上面创建的示例表),你的应用应该看起来像这样:

Connecting to a Neon database from Community Cloud
本教程假设使用本地Streamlit应用程序,但您也可以从托管在Community Cloud上的应用程序连接到Neon数据库。额外的步骤如下:
- 在您的仓库中添加一个
requirements.txt文件。包括Prequisites中列出的所有包以及其他依赖项。 - Add your secrets 到你在社区云中的应用。
还有问题吗?
我们的 论坛 充满了有用的信息和Streamlit专家。