パラメータからクエリを作成する
ここでは、ホテルデータベースをより柔軟に検索できる関数を実装しましょう。この関数は、コードの他の部分から引数を受け取って動作することを目標にします。
具体的には、列名と値の辞書を引数として受け取り、条件に一致するホテルの一覧をデータベースから返す find_hotels() 関数を定義しましょう。
この演習はコースの一部です
Python でチャットボットを作る
演習の手順
filtersリストはすでに作成されています。このリストを" WHERE "と" and "という文字列でつなぎ合わせましょう。params辞書の値からタプルを作成しましょう。- 前の演習と同様に、
"hotels.db"への接続とカーソルを作成し、queryを実行しましょう。 - クエリの結果を返しましょう。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Define find_hotels()
def find_hotels(params):
# Create the base query
query = 'SELECT * FROM hotels'
# Add filter clauses for each of the parameters
if len(params) > 0:
filters = ["{}=?".format(k) for k in params]
query += " ____ " + " ____ ".join(____)
# Create the tuple of values
t = tuple(____)
# Open connection to DB
conn = sqlite3.connect("____")
# Create a cursor
c = ____
# Execute the query
____
# Return the results
____