使用不同的数据库进行开发与生产 Flask

2023-12-26

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

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


首先,最好将对生产数据库的访问限制为仅受信任的 IP。


正如您可以阅读的配置处理:开发/生产(Flask 文档) https://flask.palletsprojects.com/en/1.1.x/config/#development-production,您可以有多个配置并使用继承。

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

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

class DevelopmentConfig(Config):
    pass

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

另一种解决方案是使用实例文件夹(Flask 文档) https://flask.palletsprojects.com/en/1.1.x/config/#instance-folders that 不应该是git 存储库的一部分。

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用不同的数据库进行开发与生产 Flask 的相关文章

  • Python 线程在 main 中调用一次时运行两次[重复]

    这个问题在这里已经有答案了 if name main t threading Thread target authtarget t daemon True t start print running thread app run debug
  • 在测试中捕获 Flask 中止状态代码?

    我在基于 Flask 类的视图中有一个 abort 我可以断言已调用中止 但我无法在上下文管理器中访问 406 代码 views py from flask views import View from flask import abort
  • Wtforms:如何使用具有动态选择值的选择字段生成空白值

    我在用着Flask http flask pocoo org 与 WTForms doc http wtforms simplecodes com docs 0 6 fields html 在 Google App Engine 上 为选择
  • 如何根据 HTTP 请求使用 Python 和 Flask 执行 shell 命令并流输出?

    下列的这个帖子 https stackoverflow com questions 15092961 how to continuously display python output in a webpage 我能够tail f网页的日志
  • Werkzeug 中的线程和本地代理。用法

    首先 我想确保我正确理解了功能的分配 分配本地代理功能以通过线程内的模块 包 共享变量 对象 我对吗 其次 用法对我来说仍然不清楚 也许是因为我误解了作业 我用烧瓶 如果我有两个 或更多 模块 A B 我想将对象C从模块A导入到模块B 但我
  • 删除flask中的一对一关系

    我目前正在使用 Flask 开发一个应用程序 并且在删除一对一关系中的项目时遇到了一个大问题 我的模型中有以下结构 class User db Model tablename user user id db Column db String
  • 如何在flask中重新加载python模块?

    我有一个名为mapping py有一本字典methodMapping 在我的 Web 应用程序中 一个键值对被添加到 methodMapping 字典中 我将其附加到之后mapping py reload mapping 被调用 并且文件重
  • Jinja2 嵌套循环计数器

    set cnt 0 for room in rooms for bed in room set cnt cnt 1 endfor cnt endfor 假设我们有一个嵌套循环 打印的 cnt 将始终为 0 因为这是我们进入第一个 for 循
  • Flask 中“缺少 CSRF 令牌”,但它在模板中呈现

    问题 当我尝试登录 使用 Flask login 时 我得到Bad Request The CSRF session token is missing但令牌正在呈现 在模板中 secret key 已设置 并且我在本地运行localhost
  • 将 window.location 传递给 Flask url_for

    我正在使用 python 在我的页面上 当匿名用户转到登录页面时 我想将一个变量传递到后端 以便它指示用户来自哪里 发送 URL 因此 当用户单击此锚链接时 a href Sign in a 我想发送用户当前所在页面的当前 URL
  • Flask 应用程序中的双 IPv4 和 IPv6 支持

    是否可以运行 Flask 来监听 IPv4 和 IPv6 即双 IP 堆栈 据我检查 可以使用以下命令在 IPv4 中运行 app run host 0 0 0 0 port port debug True 或 IPv6 使用 app ru
  • Python代码执行时自动打开浏览器

    我正在 Python Flask 中实现 GUI Flask 的设计方式是 必须 手动 打开本地主机以及端口号 有没有一种方法可以使其自动化 以便在运行代码时自动打开浏览器 本地主机 我尝试使用 webbrowser 包 但它在会话终止后打
  • goJS 下拉菜单删除项目

    我有简单的 python Flask goJS 图形应用程序 如下所示 节点和链接文本的源是从应用程序的后端加载的 我将它们设置为model modelData像这样的部分 var graphDataString JSON parse di
  • 在Linux中的端口80上运行flask[重复]

    这个问题在这里已经有答案了 也许以前有过这个问题的答案 所以请重定向我 如果是这样的话 我正在考虑在端口 80 上运行 Flask 所以我检查了是否有任何东西正在使用端口 80 因为事实证明端口 80 没有运行 所以当我输入以下内容时 if
  • gcloud app deploy:此部署有太多文件

    当我尝试通过 gcloud 部署我的 GAE 应用程序时 出现以下错误 Updating service default failed ERROR gcloud app deploy Error Response 400 This depl
  • 无法找到来源:错误 [root] 错误:无法找到由“..”标识的修订版本

    我正在尝试从命令行运行迁移并不断收到错误 ERROR root Error Can t locate revision identified by faf3ebfbe667 正如其他帖子中所建议的 我删除了我的 sqlite 数据库和迁移文
  • 在 cherokee 和 uwsgi 上部署 Flask [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我正在尝试部署一个使用 cherokee 和 uwsgi 开发的 Flask Web 应用程序 我安装了 cherokee 和 uwsgi 并正在工作
  • 如何在单元测试中使用 JSON 发送请求

    我的 Flask 应用程序中有在请求中使用 JSON 的代码 我可以像这样获取 JSON 对象 Request request get json 这一直工作得很好 但是我正在尝试使用 Python 的 unittest 模块创建单元测试 但
  • Flask Restful API url

    我正在使用 Flask RESTful http flask restful readthedocs org en latest index html http flask restful readthedocs org en latest
  • Sqlalchemy 一对多关系加入?

    我正在尝试做一个像这样的简单连接查询 SELECT food id food food name food categories food categories FROM food JOIN food categories ON food

随机推荐

  • MCMCglmm 中 “trait” 的意思

    Like in 这个帖子 https stats stackexchange com questions 156683 when and why do i have to use trait for multinomial multilev
  • 使用子图的 Pandas 条形图

    我正在使用 pandas 创建条形图 这是一个例子 df pd DataFrame np random rand 10 4 columns a b c d df plot kind bar 我想在一个图中绘制两个子图 并在一个条形图上绘制
  • 获取其他类中的变量

    我需要获取变量inString在其他班级 我怎样才能做到这一点 public class main public static StringBuffer inString public static void main String arg
  • 为什么IE9+、Chrome和Opera15+浏览器在用户代理中将自己标识为Mozilla?

    我正在寻找一种用 JavaScript 识别 IE 的方法 突然 我注意到浏览器被识别为 Mozilla Opera Mozilla 5 0 Windows NT 6 1 WOW64 AppleWebKit 537 36 KHTML 如 G
  • 如何在 Python 中使用 mv 命令与子进程

    我在 home somedir subdir 中有很多文件 我试图以编程方式将它们全部移动到 home somedir 现在我有这个 subprocess call mv home somedir subdir somedir 但它给了我这
  • 动态转发:抑制不完整实施警告

    我有一个公开一些方法的类 其实现由内部对象提供 我使用前向调用在运行时分派对内部对象的方法调用 但 XCode 抱怨 因为它找不到声明的方法的实现 我在 SO 上发现了一些其他类似的问题 但所有这些问题都通过设计更改得到了解决 我无意在这里
  • 当条件为假时如何跳过批处理步骤

    我有一项基本工作和一个基本步骤 该作业每 x 秒执行一次 我为此使用石英 然后在我的配置类中我还有变量 runStep 我应该在哪里添加此属性并仅在 runStep 为 true 时运行我的步骤
  • 从seaborn clustermap结果中重新排序高级集群

    有没有办法从a to b下图中有脚本吗 我在用seaborn clustermap 到达 得到a 即保留行的顺序 但是 列顺序仅在第二最高级别更改 I was wondering whether it is possible to use
  • PyCharm - 预期类型“Optional[IO[str]]”,却得到“TextIOWrapper[str]”

    将 PyCharm 更新到 2017 1 后 在一切看似简单且正确的地方开始弹出新的检查警告 它看起来如下 看起来像open 不返回预期的类型file参数 但代码非常简单 最重要的是 它确实按预期工作 使用 Python 3 5 2 Pyt
  • Symfony 2.2 扩展 ExceptionController

    这个问题与跟随变化 https github com symfony symfony commit 35d63df044cba20cdf441963ca85a7f4d51200cc Symfony 2 2 版本的一部分 Part 1 在 S
  • 放置 onSharedPreferenceChangeListener 的最佳位置

    我正在尝试向我的应用程序添加设置 我已添加新设置 但不知道该放在哪里OnSharedPreferenceChangeListener 我把它放在活动中并添加了一个Log d 但是Log d 永远不会被触发 有任何想法吗 最佳地点根据Andr
  • 如何获取空值的先前值

    我的表中有以下数据 Id FeeModeId Name Amount 1 NULL NULL 20 2 1 Quarter 1 5000 3 NULL NULL 2000 4 2 Quarter 2 8000 5 NULL NULL 500
  • 如何检测用户是否已经打开了某个网址并在已打开的情况下重定向到相同的网址?

    谁能告诉我如何检测用户是否已打开链接 url 选项卡 如果 url 已打开 是否可以将链接重定向到活动浏览器选项卡 例如 用户单击链接 js 代码将在浏览器中打开一个新选项卡 现在 如果用户再次单击该链接 我希望他重定向到活动会话 而不是打
  • 无法播放某些视频

    我正在尝试通过我们的服务器在 Android 设备上播放电影 它不是一个媒体服务器 只是一个普通的 Apache 服务器 我们使用相同的 API 来访问 iPhone 上的视频 效果很好 在 Android 设备上 某些视频可以播放 而另一
  • Office 插件开发:在 Word 2016 中插入表格

    我尝试使用 Office js 在文档正文中插入表格 但无济于事 我使用了以下代码 function insertSampleTable showNotification Insert Table Inserting table Word
  • 无法看到部署的 Firebase 功能

    我按照以下步骤操作 Firebase CLI 命令行界面 需要 Node js 和 npm 您可以按照以下说明进行安装https nodejs org https nodejs org 安装 Node js 也会安装 npm 安装 Node
  • 将 Fog 与 Ruby 结合使用生成预签名 URL 以将文件放入 Amazon S3 中

    我正在使用 Fog gem 生成预签名的 url 我可以成功地执行此操作以获得对该文件的读取访问权限 这就是我所做的 fog s3 Fog Storage new provider gt AWS aws access key id gt k
  • 从 Exact Online 检索联系人时出现错误

    我想在 Exact Online 中检索一家公司的所有联系人 但收到以下错误 select from AccountContacts Error itgenusg026 不支持请求的 3 308 列数 将请求的列数限制为最多 1 000 列
  • 哪些 MVC 框架可用于 Java 桌面/winform 应用程序?

    我要开发一个winform应用程序 我想将模型 视图和控制器分开 我没有使用过任何Java MVC框架 并且已经脱离Java几年了 谁能根据自己的经验告诉我一些合适的框架及其优缺点 我计划使用 NetBeans IDE Griffon ht
  • 使用不同的数据库进行开发与生产 Flask

    我有一个 Flask 应用程序 它根据生产环境变量和开发环境变量使用不同的数据库 我担心开发人员在运行本地 Flask 应用程序之前忘记设置 FLASK ENV development 然后突然对生产数据库进行更新 我想到的唯一简单的解决方