烧瓶应用程序数据库数据会在一段时间后自动删除,这些数据部署在 heroku 中
Posted
技术标签:
【中文标题】烧瓶应用程序数据库数据会在一段时间后自动删除,这些数据部署在 heroku 中【英文标题】:flask app database data is automatically removed after some time which is deployed in heroku 【发布时间】:2021-12-04 15:39:44 【问题描述】:我在烧瓶中创建了一个 SQLite 数据库,当我测试网站时,我提交了一些数据并且它工作正常,但是当我在 Heroku 中部署应用程序并通过添加一些数据再次测试它heroku app 它存储它并正常工作所以我关闭了那个标签。但是当我在 1 小时后重新访问该站点时,我在 Heroku 中部署应用程序后添加的数据不存在。它一直在发生
我的数据库代码
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///categories.db'
app.config['SQLALCHEMY_BINDS'] =
'anime': 'sqlite:///anime.db',
'movie': 'sqlite:///movies.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
Bootstrap(app)
db = SQLAlchemy(app)
# CREATE TABLE
class Categories(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100), unique=True, nullable=False)
description = db.Column(db.String(250), nullable=False)
review = db.Column(db.String(250), nullable=True)
img_url = db.Column(db.String(250), nullable=False)
db.create_all()
class Anime(db.Model):
__bind_key__ = 'anime'
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(250), unique=True, nullable=False)
year = db.Column(db.Integer, nullable=False)
description = db.Column(db.String(500), nullable=False)
rating = db.Column(db.Float, nullable=True)
ranking = db.Column(db.Integer, nullable=True)
review = db.Column(db.String(250), nullable=True)
img_url = db.Column(db.String(250), nullable=False)
db.create_all()
class Movie(db.Model):
__bind_key__ = "movie"
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(250), unique=True, nullable=False)
year = db.Column(db.Integer, nullable=False)
description = db.Column(db.String(500), nullable=False)
rating = db.Column(db.Float, nullable=True)
ranking = db.Column(db.Integer, nullable=True)
review = db.Column(db.String(250), nullable=True)
img_url = db.Column(db.String(250), nullable=False)
db.create_all()
网站:-Click Hear
【问题讨论】:
【参考方案1】:Heroku Dynos 使用ephemeral filesystem。 Sqlite 不是在这种环境中使用的可靠数据库,因为它作为文件存储在本地文件系统上,并且会在应用程序的生命周期内定期销毁。
在这种环境下,我建议使用托管数据库解决方案,例如 Heroku Postgres。
编辑 2021-10-18:我偶然发现了有关 SQLite on Heroku 的官方 Heroku 文档。至于将 SQLAlchemy 连接到 Postgres,我在 *** 上找到了对问题 How do I use Heroku Postgres with my flask-sqlalchemy app? 的非常彻底的答案。
【讨论】:
谢谢,但我还是不明白。你能正确地给我解释一下如何使用它吗?以上是关于烧瓶应用程序数据库数据会在一段时间后自动删除,这些数据部署在 heroku 中的主要内容,如果未能解决你的问题,请参考以下文章