」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 這週我學到了什麼 #0

這週我學到了什麼 #0

發佈於2024-07-29
瀏覽:231

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]刪除
最新教學 更多>
  • 如何從Google API中檢索最新的jQuery庫?
    如何從Google API中檢索最新的jQuery庫?
    從Google APIS 問題中提供的jQuery URL是版本1.2.6。對於檢索最新版本,以前有一種使用特定版本號的替代方法,它是使用以下語法: https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js(google hosted...
    程式設計 發佈於2025-01-31
  • 如何使用不同數量列的聯合數據庫表?
    如何使用不同數量列的聯合數據庫表?
    合併列數不同的表 當嘗試合併列數不同的數據庫表時,可能會遇到挑戰。一種直接的方法是在列數較少的表中,為缺失的列追加空值。 例如,考慮兩個表,表 A 和表 B,其中表 A 的列數多於表 B。為了合併這些表,同時處理表 B 中缺失的列,請按照以下步驟操作: 確定表 B 中缺失的列,並將它們添加到表的...
    程式設計 發佈於2025-01-31
  • 哪種方法更有效地用於點 - 填點檢測:射線跟踪或matplotlib \的路徑contains_points?
    哪種方法更有效地用於點 - 填點檢測:射線跟踪或matplotlib \的路徑contains_points?
    在Python 射線tracing方法 matplotlib路徑對象表示多邊形。它檢查給定點是否位於定義路徑內。如提供的代碼段所示: polygon = [[np.sin(x)0.5,np.cos (x)0.5]在np.linspace中的x(0,2*np.pi,100) ] points = ...
    程式設計 發佈於2025-01-31
  • 如何限制動態大小的父元素中元素的滾動範圍?
    如何限制動態大小的父元素中元素的滾動範圍?
    在交互式界面中實現垂直滾動元素的CSS高度限制 考慮一個佈局,其中我們具有與可滾動的映射div一起移動的subollable map div用戶的垂直滾動,同時保持其與固定側邊欄的對齊方式。但是,地圖的滾動無限期擴展,超過了視口的高度,阻止用戶訪問頁面頁腳。 可以限制地圖的滾動,我們可以利用CS...
    程式設計 發佈於2025-01-31
  • 如何使用char_length()在mySQL中按字符串長度對數據進行排序?
    如何使用char_length()在mySQL中按字符串長度對數據進行排序?
    [2 using the built-in CHAR_LENGTH() function.Difference between CHAR_LENGTH() and LENGTH()CHAR_LENGTH():返回字符串中字符數的數量,考慮多字節字符編碼(例如,UTF-8)。 此查詢將從指定的表中...
    程式設計 發佈於2025-01-31
  • 對象擬合:IE和Edge中的封面失敗,如何修復?
    對象擬合:IE和Edge中的封面失敗,如何修復?
    解決此問題,我們採用了一個巧妙的CSS解決方案來解決問題: transform:translate:translate(-50%,-50%); height:100%; 高度:auto; 寬度:100%; //對於水平塊 ,使用絕對定位將圖像定位在中心,以object-fit:object-f...
    程式設計 發佈於2025-01-31
  • 如何使用PHP將斑點(圖像)正確插入MySQL?
    如何使用PHP將斑點(圖像)正確插入MySQL?
    在嘗試將image存儲在mysql數據庫中時,您可能會遇到一個可能會遇到問題。本指南將提供成功存儲您的圖像數據的解決方案。 easudy values('$ this-> ; image_id','file_get_contents($ tmp_imag...
    程式設計 發佈於2025-01-31
  • Java是否允許多種返回類型:仔細研究通用方法?
    Java是否允許多種返回類型:仔細研究通用方法?
    在java中的多個返回類型:一個誤解介紹,其中foo是自定義類。該方法聲明似乎擁有兩種返回類型:列表和E。但是,情況確實如此嗎? 通用方法:拆開神秘 [方法僅具有單一的返回類型。相反,它採用機制,如鑽石符號“ ”。 分解方法簽名: :本節定義了一個通用類型參數,E。它表示該方法接受了擴展foo類...
    程式設計 發佈於2025-01-31
  • 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-01-31
  • \“(1)vs.(;;):編譯器優化是否消除了性能差異?\”
    \“(1)vs.(;;):編譯器優化是否消除了性能差異?\”
    使用(1)而不是(;;)會導致無限循環的性能差異? 現代編譯器,(1)和(;;)之間沒有性能差異。 是如何實現這些循環的技術分析在編譯器中: perl: S-> 7 8 unstack v-> 4 -e語法ok 在GCC中,兩者都循環到相同的彙編代碼中,如下所示:。 globl t_時 ...
    程式設計 發佈於2025-01-31
  • 如何干淨地刪除匿名JavaScript事件處理程序?
    如何干淨地刪除匿名JavaScript事件處理程序?
    在這里工作/},false); 不幸的是,答案是否。除非在Creation中存儲對處理程序的引用。 要解決此問題,請考慮將事件處理程序存儲在中心位置,例如頁面的主要對象,請考慮將事件處理程序存儲在中心位置,否則無法清理匿名事件處理程序。 。這允許在需要時輕鬆迭代和清潔處理程序。
    程式設計 發佈於2025-01-31
  • 為什麼使用固定定位時,為什麼具有100%網格板柱的網格超越身體?
    為什麼使用固定定位時,為什麼具有100%網格板柱的網格超越身體?
    網格超過身體,用100%grid-template-columns 問題:考慮以下CSS和HTML: position:fixed ; grid-template-columns:40%60%; grid-gap:5px; 背景: #eee; 當位置未固定時,網格將正確顯示。但是...
    程式設計 發佈於2025-01-31
  • 大批
    大批
    [2 數組是對象,因此它們在JS中也具有方法。 切片(開始):在新數組中提取部分數組,而無需突變原始數組。 令ARR = ['a','b','c','d','e']; // USECASE:提取直到索引作...
    程式設計 發佈於2025-01-31
  • 如何克服PHP的功能重新定義限制?
    如何克服PHP的功能重新定義限制?
    克服PHP的函數重新定義限制在PHP中,多次定義一個相同名稱的函數是一個no-no。嘗試這樣做,如提供的代碼段所示,將導致可怕的“不能重新列出”錯誤。 // error:“ coss redeclare foo()” 但是,php工具腰帶中有一個隱藏的寶石:runkit擴展。它使您能夠靈活...
    程式設計 發佈於2025-01-31
  • PHP陣列鍵值異常:了解07和08的好奇情況
    PHP陣列鍵值異常:了解07和08的好奇情況
    PHP數組鍵值問題,使用07&08 在給定數月的數組中,鍵值07和08呈現令人困惑的行為時,就會出現一個不尋常的問題。運行print_r($月份)返回意外結果:鍵“ 07”丟失,而鍵“ 08”分配給了9月的值。 此問題源於PHP對領先零的解釋。當一個數字帶有0(例如07或08)的前綴時,PHP...
    程式設計 發佈於2025-01-31

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3