flask - 使用不同的数据库进行开发与生产 Flask
问题描述
我有一个烧瓶应用程序,它使用基于生产与开发环境变量的不同数据库。我担心开发人员在运行本地烧瓶应用程序之前忘记设置 FLASK_ENV=development,突然他们正在对生产数据库进行更新。
我想到的唯一简单的解决方案是将生产数据库限制为仅接受来自生产服务器 IP 的请求,这样如果开发人员忘记设置环境变量,一切都会出错,但我想知道是否有更好的解决方案问题。
解决方案
首先,将生产数据库的访问权限限制为仅受信任的 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 配置。 他们有几个例子,并在我上面给你的链接中很好地解释了如何使用它。
推荐阅读
- python - 转换为 LineString 时的最短路径错过了 OSMNX 中的路径
- c++ - operator[] 中的完美转发
- python - IndexError:索引 20 超出轴 1 的范围,大小为 20
- python - 使用内存映射文件将数据从 C# 传递到 Python
- javascript - 应该 cosole.log e.target,但没有。为什么?
- json - Flutter:JSON.parse 在空字符串上失败
- python - 使用 matplotlib 绘制日期时间熊猫系列时遇到问题
- ssas - 如何在 Visual Studio 2019 中创建 Analysis Services 多维项目模板?
- discord.js - 如何创建只有给定角色才能看到的频道?
- java - 在 WebView 中下载文件后如何使应用程序不显示“无 Internet 连接”消息?