首页 > 解决方案 > 使用不同的数据库进行开发与生产 Flask

问题描述

我有一个烧瓶应用程序,它使用基于生产与开发环境变量的不同数据库。我担心开发人员在运行本地烧瓶应用程序之前忘记设置 FLASK_ENV=development,突然他们正在对生产数据库进行更新。

我想到的唯一简单的解决方案是将生产数据库限制为仅接受来自生产服务器 IP 的请求,这样如果开发人员忘记设置环境变量,一切都会出错,但我想知道是否有更好的解决方案问题。

标签: flaskdevelopment-environmentproduction

解决方案


首先,将生产数据库的访问权限限制为仅受信任的 IP 是一种很好的做法。


正如您在配置处理:开发/生产(Flask Docs)中所读到的,您可以拥有多个配置并使用继承。

class Config(object):
    DATABASE_URI = 'sqlite:///:memory:'

class ProductionConfig(Config):
    DATABASE_URI = 'mysql://user@localhost/foo'

class DevelopmentConfig(Config):
    pass

您可以始终加载安全的默认配置。只有设置了生产环境变量,才会加载真正的数据库配置。

另一种解决方案是使用不能成为git 存储库一部分的实例文件夹(Flask Docs) 。

实例文件夹被设计为不受版本控制并且是特定于部署的。

因此,当您部署您的应用程序时,只需将您的生产配置添加到此实例文件夹,没有人会在其本地计算机上拥有 prod 配置。 他们有几个例子,并在我上面给你的链接中很好地解释了如何使用它。


推荐阅读