这周我学到了什么 #0
我发现自己每周都会学习一件或多件新事物,至少从我个人经历的角度来看是这样。因此,我认为在这里分享它是巩固一些知识、记录下来并有可能帮助其他人学习他们以前不知道的东西的好方法。
本周我了解到可以编写一个 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 < '/path/to/{backup_name}.sql'" os.command(command) # import the app variable to allow for the context to be created from app_module import app_variable with app_variable.app_context(): # do all Flask related imports here from app_module import relevant_app_class_or_function # run all relevant code here to build up your data from the loaded backup # remove the imported modules del relevant_app_class_or_function # remove the app variable after the context expires just to be safe del app_variable
就是这样,这就是我能够仅从数据库备份中提取历史数据的方法。
这是非常具体的,我意识到,但这也不是教程,它纯粹是我个人学习经验的一个出口,我想在这里分享,希望它成为一本有趣的读物或一个对某个地方的某人有帮助的提示。
如果您已经读到这里,我想对您的阅读表示感谢,并希望您能在我的下一篇文章中加入我。
以上是这周我学到了什么 #0的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Python更易学且易用,C 则更强大但复杂。1.Python语法简洁,适合初学者,动态类型和自动内存管理使其易用,但可能导致运行时错误。2.C 提供低级控制和高级特性,适合高性能应用,但学习门槛高,需手动管理内存和类型安全。

要在有限的时间内最大化学习Python的效率,可以使用Python的datetime、time和schedule模块。1.datetime模块用于记录和规划学习时间。2.time模块帮助设置学习和休息时间。3.schedule模块自动化安排每周学习任务。

Python在开发效率上优于C ,但C 在执行性能上更高。1.Python的简洁语法和丰富库提高开发效率。2.C 的编译型特性和硬件控制提升执行性能。选择时需根据项目需求权衡开发速度与执行效率。

每天学习Python两个小时是否足够?这取决于你的目标和学习方法。1)制定清晰的学习计划,2)选择合适的学习资源和方法,3)动手实践和复习巩固,可以在这段时间内逐步掌握Python的基本知识和高级功能。

Python和C 各有优势,选择应基于项目需求。1)Python适合快速开发和数据处理,因其简洁语法和动态类型。2)C 适用于高性能和系统编程,因其静态类型和手动内存管理。

pythonlistsarepartofthestAndArdLibrary,herilearRaysarenot.listsarebuilt-In,多功能,和Rused ForStoringCollections,而EasaraySaraySaraySaraysaraySaraySaraysaraySaraysarrayModuleandleandleandlesscommonlyusedDduetolimitedFunctionalityFunctionalityFunctionality。

Python在自动化、脚本编写和任务管理中表现出色。1)自动化:通过标准库如os、shutil实现文件备份。2)脚本编写:使用psutil库监控系统资源。3)任务管理:利用schedule库调度任务。Python的易用性和丰富库支持使其在这些领域中成为首选工具。

Python在Web开发中的关键应用包括使用Django和Flask框架、API开发、数据分析与可视化、机器学习与AI、以及性能优化。1.Django和Flask框架:Django适合快速开发复杂应用,Flask适用于小型或高度自定义项目。2.API开发:使用Flask或DjangoRESTFramework构建RESTfulAPI。3.数据分析与可视化:利用Python处理数据并通过Web界面展示。4.机器学习与AI:Python用于构建智能Web应用。5.性能优化:通过异步编程、缓存和代码优
