烧瓶应用程序数据库数据会在一段时间后自动删除,这些数据部署在 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 中的主要内容,如果未能解决你的问题,请参考以下文章

为啥LocationListener会在一段时间后禁用?

为啥实体框架会在一段时间后忘记我的数据库模型中的内容?

FCM 令牌在一段时间后刷新

Codeigniter / PHP在一段时间后删除行

为啥托管在 Windows 服务内的 WCF 服务会在一段时间后死掉

java - 如何使用java在一段时间后自动将数据存储到mySql数据库? [复制]