title: Dynamically add multiple condition into SQLAchemy query
tags: SQLAchemy, flask, python
用SQLAchemy 動態加入多個查詢條件
使用者輸入的查詢條件有多有少,數量不等,我們要怎麼動態的將這些查詢條件加入到我們的SQL指令當中呢?
假設我們是一個餐廳的查詢系統,使用者可以透過餐廳所在地點
, 開放時間
, 菜色
來查詢喜歡的餐廳。使用者可能會只篩選地點
,或是同事篩選三個,產生的組合就會有六種。我們不太可能寫六個SQL指令,將來如果查詢條件變多的話那不就要寫更多?
定義好我們的Model之後,我們寫一個get_restaurants
的function,須入傳入constrains
這個參數,constrains
為一個dictionary的變數,記錄使用者的篩選條件(如my_constrains_1
)。在get_restaurants
有一個ands
的變數,我們將constrains
利用for迴圈配合and_
這個SQLAchemy的函數一一寫入ands
。最後把ands
傳入filter
當中即可完成動態建立篩選條件的需求。
1 | from flask_sqlalchemy import SQLAlchemy |
註:為了方便理解,範例有簡化,並非實際可執行的python程式