python

Python 打包(packaging)與套件相依性管理系統 - Poetry

Python 專案的開發者目前大多數都會選擇 pip 或者 pipenv 作為套件相依性的管理工具,其中 pipenvPipenv: promises a lot, delivers very little 討論串中也得到不少負面評價,主要是 pipenv 一開始承諾的 features 遠多過於後來 release 的版本,而且有些反直覺的行為(e.g. Issue 3304 merge 之前 pipenv 每當安裝新套件就會強制更新 Pipfile.lock 內的所有套件版本)造成開發者困擾,雖然如此, pipenv 依然持續進化中,我們仍可對其抱持中立的態度。

不過前述的討論串中,蠻多人提到 Poetry 這套打包(packaging)與套件相依性管理系統,看來也是值得試試看的一個工具。因此本文特地介紹 Poetry 的使用方法。

Posted on  Oct 1, 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