【问题标题】:how to connect my streamlit application with MySQL database?如何将我的流线型应用程序与 MySQL 数据库连接起来?
【发布时间】:2022-01-20 10:47:44
【问题描述】:

所以我尝试在 MySQL 上使用我的(不断更新的)数据库,并在我的 Streamlit 应用程序中添加一些可视化效果。换句话说,我想在我的 Streamlit 应用程序中使用 MySQL 数据库中的数据。

为此,我查阅了官方 streamlit 文档here

这里的问题是教程告诉我创建一个像这样的文件:.streamlit/secrets.toml 并用以下信息填充它(复制粘贴语法):

[
mysql
]
host = "localhost"
port = 3306
database = "xxx"
user = "xxx"
password = "xxx"

到目前为止一切都很好,但是当我将 secret.toml 信息粘贴到 SECRET MANAGEMENT 小部件中时(当我在 Streamlit 云中创建新应用程序时会提示),它给了我一个语法错误。

格式无效:请输入有效的 TOML。

到目前为止,我一直在看书(教程)。现在回顾一下,我尝试只使用如下变量定义(因为我不知道.toml 语法):

db_user = "root"
db_name = "dbname"
db_password = "123abc"

我这样做对吗?还是我遗漏了一些明显的东西?


除此之外,我还需要知道如何为我的应用调用流云上的依赖项。例如,我需要 mysql-connector-python 模块,但我没有看到任何可以执行此操作的控制台

注意: 这是我第一次在云端部署应用

【问题讨论】:

    标签: mysql python-3.x database web-deployment streamlit


    【解决方案1】:

    我想通知我们可以在 Streamlit 应用程序中使用数据库的另一种方式,而不是使用传统方法。

    我们可以参考这个Medium.com article here

    它解释了一种我们可以使用Pandas 库加载数据库并且它还实时更新的方式。通过使用这些知识,连接到数据库变成了“Python”问题,而不是“流线型”问题。

    假设我们使用的是 MySQL

    我们可以根据 MySQL 数据库的official tutorial 创建一个.streamlit/secrets.toml 文件,我们将在其中存储我们的信息(与我们的数据库相关),如下所示:

    # .streamlit/secrets.toml
    [
    mysql
    ]
    host = "localhost"
    port = 3306
    database = "xxx"
    user = "xxx"
    password = "xxx"
    

    还为 python 安装 mysql-connector-python 并将其导入您的应用程序文件。你还需要Pandastoml 当然:

    pip install mysql-connector-python pandas toml
    

    这是他们每个人的工作: |图书馆 |它的用途 | | -------- | -------------- | | mysql-连接器-python |连接到我们的数据库 | |熊猫 |读取我们的数据库表并将其转换为 Dataframe | |toml|从 secrets.toml 文件中读取详细信息 |

    步骤 1

    我们从secrets.toml阅读详细信息

    # Reading data
    toml_data = toml.load("secrets.toml")
    # saving each credential into a variable
    HOST_NAME = toml_data['mysql']['host']
    DATABASE = toml_data['mysql']['database']
    PASSWORD = toml_data['mysql']['password']
    USER = toml_data['mysql']['user']
    PORT = toml_data['mysql']['port']
    

    第 2 步

    连接到我们的数据库:

    # Using the variables we read from secrets.toml
    mydb = connection.connect(host=HOST_NAME, database=DATABASE, user=USER, passwd=PASSWORD, use_pure=True)
    

    第三步

    从我们的数据库中查询:

    query = pd.read_sql('SELECT * FROM mytable;' , mydb)
    

    query 变量现在是 streamlit 或 Jupyter 笔记本中可显示的表格

    同样,我们可以从我们的数据库中进行任何我们想要的 MySQL 查询(应用语法)。

    此信息基于我自己的经验。

    【讨论】:

      【解决方案2】:
      [
      mysql
      ]
      

      应该是[mysql]一行

      在您的 GitHub 存储库中,添加带有您的依赖项的 requirements.txt 文件。

      streamlit cloud 将为您的应用安装这些软件包。

      【讨论】:

      • 哦,现在我明白了,直到现在我都在使用 PythonAnywhere,我必须自己手动安装所有依赖项(也使用 requirements.txt),但我不知道这个过程是自动的在流光中。谢谢
      猜你喜欢
      • 2020-07-09
      • 2022-06-14
      • 2013-05-12
      • 2016-03-13
      • 2021-12-04
      • 2016-03-21
      • 2012-02-10
      • 2014-02-12
      • 1970-01-01
      相关资源
      最近更新 更多