”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 这周我学到了什么 #0

这周我学到了什么 #0

发布于2024-07-29
浏览:118

What I

我发现自己每周都会学习一件或多件新事物,至少从我个人经历的角度来看是这样。因此,我认为在这里分享它是巩固一些知识、记录下来并有可能帮助其他人学习他们以前不知道的东西的好方法。

本周我了解到可以编写一个 python 脚本,该脚本可以获取数据库备份名称列表,将数据库导入 MySQL,然后启动 Flask 上下文,并按现状运行数据库报告,并且然后冲洗并重复。

也许这听起来是一个简单的概念,但事实证明,尝试使用大多数标准方法来实现这一目标具有欺骗性的挑战性。我首先简单地编写一个导入备份的脚本,然后对导入的数据运行报告,并将其放入循环中。但遗憾的是,我遇到了一个挂在第二次循环迭代上的终端,所以我开始分解可能发生的情况。

首先想到的是,我从 Flask 应用程序进行的导入导致导入被阻止,因为脚本尚未终止,因此保持与 Flask 的数据库连接的锁仍然处于活动状态,但没有错误消息通知我发生了这种情况,我认为这是设计使然,因此我利用 Flask 的经验来合理化这很可能是这种情况。

所以,我去寻找如何简单地“取消导入”我从 Flask 导入的模块,并在 python 中遇到了 del 关键字来完成工作并再次尝试......结果却遇到了我之前坐过的那个悬挂终端。所以,一切又回到了绘图板。

我的下一个想法是,模块可能已被删除,但 Flask 应用程序上下文仍在某处运行。为了强制 Flask 应用程序上下文运行并停止在我想要的位置,我尝试了大约 2 年前在上一个任务中使用的方法,当时我需要使用 Flask 应用程序上下文异步发送电子邮件。

然后,我尝试从 for 循环中导入应用程序,然后使用 with app.app_context(): 命令强制 Flask 仅在指定的上下文中启动和停止。然后,我运行脚本,屏住呼吸地看着终端,等待一分钟左右,数据库在第一个循环中导入,然后像以前一样从第二个循环开始,然后,成功!第二次导入成功了,我得到了预期的下一步输出,表明报告已完成,我根据输出文件进行了验证。

我对结果很满意,因为这不是我以前做过的事情,所以我很高兴我能弄清楚并让它按预期工作。

您可能想知道为什么我首先要尝试这样做,这是一个很好的问题。我的任务是提取一份历史月度报告,该报告需要的数据除了数据库备份之外还没有保存在任何地方,并且无法从当前的实时数据库中收集,因此我只能使用备份来提取这些数据。这促使我学习如何管理 Flask 上下文以及数据库导入。

对于那些喜欢阅读代码的人,这就是我构建脚本的方式:

import os # for running the database import command

backup_name_list = [
    "backup1",
    "backup2"
]

for backup_name in backup_name_list:
    # do all necessary changes or checks on the db name here
    command = f"mysql -u db_user_name --password='SomePassword' db_name 



就是这样,这就是我能够仅从数据库备份中提取历史数据的方法。

这是非常具体的,我意识到,但这也不是一个教程,它纯粹是我个人学习经验的一个出口,我想在这里分享,希望它成为一本有趣的读物或一个给某个地方的某人有帮助的提示。

如果您已经读到这里,我想对您的阅读表示感谢,并希望您能在我的下一篇文章中加入我。

版本声明 本文转载于:https://dev.to/kyledev008/what-ive-learned-this-week-0-57ek?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • C++20 Consteval函数中模板参数能否依赖于函数参数?
    C++20 Consteval函数中模板参数能否依赖于函数参数?
    [ consteval函数和模板参数依赖于函数参数在C 17中,模板参数不能依赖一个函数参数,因为编译器仍然需要对非contexexpr futcoriations contim at contexpr function进行评估。 compile time。 C 20引入恒定函数,必须在编译时进行...
    编程 发布于2025-07-15
  • Python中何时用"try"而非"if"检测变量值?
    Python中何时用"try"而非"if"检测变量值?
    使用“ try“ vs.” if”来测试python 在python中的变量值,在某些情况下,您可能需要在处理之前检查变量是否具有值。在使用“如果”或“ try”构建体之间决定。“ if” constructs result = function() 如果结果: 对于结果: ...
    编程 发布于2025-07-15
  • eval()vs. ast.literal_eval():对于用户输入,哪个Python函数更安全?
    eval()vs. ast.literal_eval():对于用户输入,哪个Python函数更安全?
    称量()和ast.literal_eval()中的Python Security 在使用用户输入时,必须优先确保安全性。强大的Python功能Eval()通常是作为潜在解决方案而出现的,但担心其潜在风险。 This article delves into the differences betwee...
    编程 发布于2025-07-15
  • 为什么尽管有效代码,为什么在PHP中捕获输入?
    为什么尽管有效代码,为什么在PHP中捕获输入?
    在php ;?>" method="post">The intention is to capture the input from the text box and display it when the submit button is clicked.但是,输出...
    编程 发布于2025-07-15
  • Python高效去除文本中HTML标签方法
    Python高效去除文本中HTML标签方法
    在Python中剥离HTML标签,以获取原始的文本表示Achieving Text-Only Extraction with Python's MLStripperTo streamline the stripping process, the Python standard librar...
    编程 发布于2025-07-15
  • 如何使用FormData()处理多个文件上传?
    如何使用FormData()处理多个文件上传?
    )处理多个文件输入时,通常需要处理多个文件上传时,通常是必要的。 The fd.append("fileToUpload[]", files[x]); method can be used for this purpose, allowing you to send multi...
    编程 发布于2025-07-15
  • 如何使用不同数量列的联合数据库表?
    如何使用不同数量列的联合数据库表?
    合并列数不同的表 当尝试合并列数不同的数据库表时,可能会遇到挑战。一种直接的方法是在列数较少的表中,为缺失的列追加空值。 例如,考虑两个表,表 A 和表 B,其中表 A 的列数多于表 B。为了合并这些表,同时处理表 B 中缺失的列,请按照以下步骤操作: 确定表 B 中缺失的列,并将它们添加到表的末...
    编程 发布于2025-07-15
  • 为什么我在Silverlight Linq查询中获得“无法找到查询模式的实现”错误?
    为什么我在Silverlight Linq查询中获得“无法找到查询模式的实现”错误?
    查询模式实现缺失:解决“无法找到”错误在银光应用程序中,尝试使用LINQ建立错误的数据库连接的尝试,无法找到以查询模式的实现。”当省略LINQ名称空间或查询类型缺少IEnumerable 实现时,通常会发生此错误。 解决问题来验证该类型的质量是至关重要的。在此特定实例中,tblpersoon可能需...
    编程 发布于2025-07-15
  • 如何使用PHP从XML文件中有效地检索属性值?
    如何使用PHP从XML文件中有效地检索属性值?
    从php $xml = simplexml_load_file($file); foreach ($xml->Var[0]->attributes() as $attributeName => $attributeValue) { echo $attributeName,...
    编程 发布于2025-07-15
  • HTML格式标签
    HTML格式标签
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    编程 发布于2025-07-15
  • 在PHP中如何高效检测空数组?
    在PHP中如何高效检测空数组?
    在PHP 中检查一个空数组可以通过各种方法在PHP中确定一个空数组。如果需要验证任何数组元素的存在,则PHP的松散键入允许对数组本身进行直接评估:一种更严格的方法涉及使用count()函数: if(count(count($ playerList)=== 0){ //列表为空。 } 对...
    编程 发布于2025-07-15
  • 如何使用替换指令在GO MOD中解析模块路径差异?
    如何使用替换指令在GO MOD中解析模块路径差异?
    在使用GO MOD时,在GO MOD 中克服模块路径差异时,可能会遇到冲突,其中可能会遇到一个冲突,其中3派对软件包将另一个带有导入套件的path package the Imptioned package the Imptioned package the Imported tocted pac...
    编程 发布于2025-07-15
  • 如何检查对象是否具有Python中的特定属性?
    如何检查对象是否具有Python中的特定属性?
    方法来确定对象属性存在寻求一种方法来验证对象中特定属性的存在。考虑以下示例,其中尝试访问不确定属性会引起错误: >>> a = someClass() >>> A.property Trackback(最近的最新电话): 文件“ ”,第1行, attributeError:SomeClass实...
    编程 发布于2025-07-15
  • Go语言垃圾回收如何处理切片内存?
    Go语言垃圾回收如何处理切片内存?
    Garbage Collection in Go Slices: A Detailed AnalysisIn Go, a slice is a dynamic array that references an underlying array.使用切片时,了解垃圾收集行为至关重要,以避免潜在的内存泄...
    编程 发布于2025-07-15
  • 如何在无序集合中为元组实现通用哈希功能?
    如何在无序集合中为元组实现通用哈希功能?
    在未订购的集合中的元素要纠正此问题,一种方法是手动为特定元组类型定义哈希函数,例如: template template template 。 struct std :: hash { size_t operator()(std :: tuple const&tuple)const {...
    编程 发布于2025-07-15

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3