Python 模組/套件推薦

Python dotenv 介紹與使用教學

將一些重要的資料存在環境變數(environment variable)中,是開發時常見的手段,不僅可以避免將重要的資料不小心 commit 進 codebase 之外,也可以利用環境變數儲存系統或程式設定,實務上也經常利用環境變數區隔開發環境(development)與生產環境(production),例如:

if os. getenv('MODE') == 'development':
    # do development-related things
    pass
else:
    # do production-related things
    pass

但隨著需要設定的環境變數增多,可能導致每次進行開發都有一堆環境變數要先塞好,如果你有遇到這種情況,不妨試試 python-dotenv 吧!

Posted on  Feb 12, 2020  in  Python 模組/套件推薦  by  Amo Chen  ‐ 2 min read

Python 版本管理的好工具 - pyenv

Python 近 10 年來一直在演進,因此 Python 專案的開發也需要考慮版本的問題。

特別是 Python 2 已經退休了,而現在的 Python 專案都以 Python 3 為主,然而有些公司內部的老舊專案仍以 Python 2 開發,因此開發者必須在 Python 2 與 3 之間進行切換。

如果你有 Python 版本切換上的困擾,那麼 pyenv 會是你的好朋友!

Last updated on  Mar 13, 2023  in  Python 程式設計 - 初階 , Python 模組/套件推薦  by  Amo Chen  ‐ 2 min read

用 pytest 結合 Allure2 產生精美的測試報表

隨著專案的規模越來越大,測試的效率及測試工具的有效運用也會成為開發團隊很重要的需求之一。

剛好有人介紹一款不錯的測試報表產生工具 Allure ,除了支援支援 Java, Javascript, Ruby, PHP, .Net, Scala, Python 等多種程式語言之外,連 pytest , behave 等 Python 常見的測試套件也都有整合,故以此文記錄一下這款不錯的報表產生工具。

Posted on  Oct 13, 2019  in  Python 模組/套件推薦  by  Amo Chen  ‐ 3 min read

SQLAlchemy 強制清空所有資料表(tables)

在產品開發時,有時候會有將所有的資料表進行清空的需求,如果是用 SQLAlchemy 清空單一資料表也很簡單,但如果在多個資料表都有用到 FOREIGN KEY 就很容易遇到 IntegrityError ,原因在於如果有其他紀錄(record)關聯到程式正在刪除的紀錄(record)時,就會導致那些紀錄違反 FOREIGN KEY Constraint 無法刪除成功。

本篇記錄如何忽視 FOREIGN KEY Constraint 強制刪除所有資料表。

Posted on  Aug 4, 2019  in  Python 模組/套件推薦  by  Amo Chen  ‐ 2 min read

Python One-Time Password 的好朋友 - pyotp

隨著資訊安全越來越受重視,也越來越多網站鼓勵用戶啟用 2FA(two-factor authentication) 或 MFA(multi-factor authentication) 以增加帳號的安全性。

而這些網站通常都會推薦用戶使用 Google Authenticator 作為 2FA / MFA 的 APP 。

因此對於開發者而言,如果要實作 2FA / MFA 功能,只要有能夠同時滿足產生 One-Time Password 與方便整合 Google Authenticator 的套件,就是最幸福的事!

如果你是 Python 的開發者,那麼推薦你使用 pyotp !

Posted on  Jul 27, 2019  in  Python 模組/套件推薦  by  Amo Chen  ‐ 3 min read

SQLAlchemy pre-ping 機制

Connection Pool 是資料庫連線管理的機制,用來節省資料庫連線的成本,達到較高的資源利用效益。 Connection Pool 會事先與資料庫一次建立多個連線(connection),並維持住這些連線,每當應用程式(Application)需要操作資料庫時,就會從 Connection Pool 中提供(checkout)連線給應用程式使用。

但是資料庫連線也有斷線的可能,那麼要如何確保從 Connection Pool 取得的連線是可用的呢?

其中一種確定連線可用的機制就是 Pre-ping 。

本文就來談談 Pre-ping 與 SQLAlchemy 的 Pre-ping 如何設定。

Posted on  Jun 5, 2019  in  Python 模組/套件推薦  by  Amo Chen  ‐ 2 min read

淺談 SQLAlchemy Relationship Lazy Loading

SQLAlchemy ORM(Object-Relational Mapping)利用 relationship() 將多個 Model 關聯在一起,讓我們直接用存取屬性方式,直接就能夠使用被關聯的 model ,使用起來十分方便。

但是 SQLAlchemy ORM 的 relationship() 預設使用一種稱為 lazy loding 的技術,如果不了解其原理的話,很容易會有 n+1 query 的問題。

本文將簡單地談談 SQLAlchemy relationship()

Posted on  Jun 1, 2019  in  Python 模組/套件推薦  by  Amo Chen  ‐ 3 min read