使用sqlite3作为数据库,在Heroku上部署Django应用程序

22

我想在Heroku上部署一个使用sqlite3作为数据库的应用程序。然而,似乎Heroku不支持使用sqlite3作为数据库的应用程序。这是真的吗?难道没有办法在Heroku上部署我的sqlite3后端应用程序吗?

PS:我已经成功地在PythonAnywhere上部署了我的应用程序,但现在想知道是否有可能使用Heroku部署它。

2个回答

34
作为Heroku的dynos没有跨部署持久化的文件系统,基于文件的数据库如SQLite3并不适合。但它是开发/快速原型的好DB。

然而,Heroku确实有一个Postgres服务,其中包括免费层和基本的每月9美元的层,非常适合爱好/小项目。与SQLite相比的最大优势是您可以获得备份,否则您将无法获得(以及所有其他Postgres功能)。

这里有一个更新您的settings.py以使用Postgres的指南:https://devcenter.heroku.com/articles/getting-started-with-django#django-settings


7
PythonAnywhere的开发人员快速评论 - 用户在我们网站上可以使用的文件系统是有备份的,因此对于SQLite,您可以获得这种好处。尽管如此,我们强烈建议任何生产网站都应该使用MySQL(也可在PythonAnywhere上使用,包括免费账户)或Postgres(这是我们网站上的付费功能)。 - Giles Thomas
@elithrar,我是新手,请问您能否解释一下“没有跨部署持久化文件系统”的含义? - Satashree Roy
Heroku的dynos(类似于小型VM或容器)非常动态。它们可以轻松地随时启动和销毁。每次启动新的dyno时,都会创建一个新的(即空的)文件系统隔离区,并将其与应用程序的所有“部署”文件和要求/运行时一起填充。实际上,这意味着每当您的应用程序将数据存储到文件中时,当dyno停止或被清理时,这些数据将丢失。如果并行运行多个dyno(即扩展到超过1个),这也意味着没有任何dyno会看到其他dyno的文件。 - blubberdiblub

4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接