Streamlit和MongoDB:将您的数据存储在云端
Streamlit 和 MongoDB:云端数据存储
Streamlit Cloud没有本地存储,因此当应用程序终止时创建的数据将丢失 —— 除非您使用像MongoDB这样的第三方存储
Streamlit允许您免费将公共应用部署到他们的云端,但是在应用程序完成时,您创建的任何文件或数据库都将不存在。这可能不是您想要的行为,因此我们将探讨使用MongoDB的解决方案。
对于许多应用程序来说,丢失这些数据并不是问题。例如,如果您设计了一个从外部源读取数据的仪表板,那么您生成的任何数据都可能是临时的,并且仅在应用程序运行时需要。
但是,正如我在为文章“使用Streamlit进行简单调查”开发应用程序时所提到的,如果应用程序本身生成需要存储的数据,情况就不那么简单了。在那个应用程序中,我将数据存储在一个本地文件中,但在基于云的部署中,这些文件在应用程序停止运行时将不存在 —— 正确的解决方案是使用外部数据存储。
我们将看到如何使用MongoDB来实现这一点,但也有其他选择。
有哪些选择?
在Streamlit文档中,有连接各种数据库和云存储供应商的指南。它们基本上可以分为三个领域:数据存储桶,如AWS S3和Google Cloud Storage,您可以在其中存储任何内容;SQL数据库,如Microsoft的SQL Server、MySQL、PostgreSQL;以及NoSQL数据库,其中Firestore和MongoDB是其中的例子。对于每种类型,您显然需要访问托管该特定数据库的服务器。
老实说,我不是SQL的最大粉丝。在我看来,SQL代码和Python之间存在一种不舒服的不协调性。(话虽如此,我绝对欣赏SQL的强大和便利,并在这里、这里和这里写过关于它的文章。)
但是,像MongoDB这样的NoSQL数据库更符合Python的做事方式。
我相信有各种关于速度、效率、易用性、安全性和其他方面的论点。但是我不会讲这些……