python

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

Flask 整合 Celery

提到 Python 非同步(asynchronous)工作通常都會想到 Celery ,而 Web-based 應用程式也經常會將耗時的要求利用非同步的方式完成,所以 Django, Flask 等 Web framework 也幾乎都會整合 Celery 。

其中 Flask 的 Celery 相關套件相對鮮少維護,因此不建議利用 Flask Celery 套件整合 Celery 。

所幸用 Flask 整合 Celery 並非難事,本文將紀錄如何不利用 Flask 套件的情況下整合 Celery 。

Posted on  Jun 1, 2019  in  Flask  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

Python Redis 發佈(publish) / 訂閱(subscribe) 範例

Redis 有個 Pub/Sub 的功能,簡單來說,就是可以發佈(publish)消息或者訂閱(subscribe)消息的功能。訂閱方跟發佈消息(message)方,都是透過所謂的 Channel 傳遞與接受訊息。

相較於選擇 RabbitMQ 這種重量級的 message broker, 如果是一些簡單的應用(Application) 其實也可以考慮選擇利用 Redis 的 Pub/Sub 達到訊息傳遞的目的。

本文簡單紀錄如何在 Python 中使用 Redis 的 Pub/Sub 。

Posted on  Apr 26, 2019  in  Python 程式設計 - 高階  by  Amo Chen  ‐ 2 min read

Flask 整合 Google 登入(Google Sign-In)

隨著 Gmail 與 G Suite 的普及,越來越多人擁有 Google 的帳號,因此現代應用程式在整合登入服務時,支援使用 Google 帳號的進行登入也很重要,本篇記錄如何用 Flask 整合 Google Sign-In 。

Posted on  Apr 20, 2019  in  Flask  by  Amo Chen  ‐ 3 min read

用 Bandit 靜態掃描工具,掃描 Python 專案中的安全性問題

這陣子看了 10 common security gotchas in Python and how to avoid them , 該文章主要介紹幾種撰寫 Python 程式時需注意的安全問題,例如處理來自外部的 XML, YAML 檔案等可能會面臨的安全性問題,相當值得一讀,保證精彩。

該文的最後也介紹一款 Python 的靜態掃描工具 Bandit , 幫助我們找出程式內可能的漏洞或問題。

Last updated on  Apr 16, 2024  in  Python 模組/套件推薦 , Python 資訊安全  by  Amo Chen  ‐ 2 min read

SQLAlchemy ORM IN / NOT IN 範例

SQLAlchemy 是 Python 生態系中相當成熟的 ORM(Object Relational Mapper) 套件,不過也因為支援相當多功能,所以經常要翻閱文件查詢 SQL 中相應的功能要如何撰寫。

本篇紀錄如何使用 SQLAlchemy 撰寫含有 INNOT IN 語句的 ORM.

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

Flask 在本機(localhost)實作 Facebook login

由於現在整合 Facebook Login API 時必須強制使用 HTTPS 以確保 Facebook 使用者的安全性,所以在本機(localhost) 整合 Facebook Login 時稍微會麻煩一些。

本文記錄如何在本機的 Flask 專案整合 Facebook login 。

Posted on  Mar 17, 2019  in  Flask  by  Amo Chen  ‐ 3 min read