Connect Streamlit to Neon

本指南解释了如何从Streamlit安全访问Neon数据库。Neon是一个完全托管的无服务器PostgreSQL数据库,它分离了存储和计算,以提供即时分支和自动扩展等功能。

  • 您的Python环境中必须安装以下包:

    streamlit>=1.28 psycopg2-binary>=2.9.6 sqlalchemy>=2.0.0
    push_pin

    注意

    您可以使用psycopg2代替psycopg2-binary。然而,构建Psycopg需要一些先决条件(如C编译器)。要在Community Cloud上使用psycopg2,您必须在存储库根目录的packages.txt文件中包含libpq-devpsycopg2-binary是一个独立的包,适用于测试和开发。

  • 您必须拥有一个Neon账户。

  • 你应该对st.connectionSecrets management有基本的了解。

如果您已经有一个想要使用的Neon项目,您可以跳到下一步

  1. 登录到Neon控制台并导航到Projects部分。

  2. 如果您看到提示输入项目名称,请跳到下一步。否则,点击“新建项目”按钮以创建一个新项目。

  3. 输入“Streamlit-Neon”作为您的项目名称,接受其他默认设置,然后点击“创建项目”。

    在Neon使用一个现成的neondb数据库创建您的项目后,您将被重定向到项目的快速启动页面。

  4. 点击左侧边栏中的“SQL Editor”。

  5. 将输入区域中的文本替换为以下代码,并点击“运行”以将示例数据添加到您的项目中。

    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');
  1. 在您的Neon项目中,点击左侧边栏中的“仪表板”。

  2. 在“连接详情”板块中,找到您的数据库连接字符串。它应该类似于这样:

    postgresql://neondb_owner:xxxxxxxxxxxx@ep-adjective-noun-xxxxxxxx.us-east-2.aws.neon.tech/neondb?sslmode=require
  3. 如果你的应用程序根目录中还没有.streamlit/secrets.toml文件,请创建一个空的secrets文件。

  4. 复制您的连接字符串并将其添加到您的应用程序的.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仓库!

  1. 将下面的代码复制到您的 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

  2. 运行你的 Streamlit 应用。

    streamlit run streamlit_app.py

    如果一切顺利(并且你使用了我们上面创建的示例表),你的应用应该看起来像这样:

    Finished app screenshot

本教程假设使用本地Streamlit应用程序,但您也可以从托管在Community Cloud上的应用程序连接到Neon数据库。额外的步骤如下:

forum

还有问题吗?

我们的 论坛 充满了有用的信息和Streamlit专家。