SQL の WHERE を使ったデータベースレコードのフィルタリング
これまでに、データベース内の任意のテーブルからレコードを取得する基本的な SQL クエリの実行方法と、特定の列や行数を指定するシンプルなクエリのカスタマイズ方法を学びました。
さらに、SQL の標準的なテクニックをいくつか身につけることで、より自在にデータを操作できるようになります。
たとえば、Chinook データベースの Customer テーブルから、Country が 'Canada' のレコードだけを取得したい場合を考えてみましょう。これは、SELECT 文に続けて WHERE 句を使うことで簡単に実現できます。
SELECT * FROM Customer WHERE Country = 'Canada'
任意の条件で SELECT 文の結果を絞り込むには、WHERE句を使います。これをレコードのフィルタリングといいます。
この演習では、Employee テーブルから 'EmployeeId' が 6 以上のレコードをすべて取得します。
必要なパッケージはすでに以下のようにインポートされています。
import pandas as pd
from sqlalchemy import create_engine
クエリを実行してみましょう!
この演習はコースの一部です
Python でのデータインポート入門
演習の手順
create_engine()の引数を完成させて、SQLite データベース'Chinook.sqlite'用のエンジンを作成します。Employeeテーブルから'EmployeeId'が6以上のレコードをすべて 選択するクエリを実行します。>=演算子を使い、結果をrsに代入してください。fetchall()メソッドをrsに呼び出し、rsのすべてのレコードを取得し、DataFramedfに格納してください。rsオブジェクトを使って、DataFrameの列名をテーブルの列名に設定します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Create engine: engine
engine = create_engine(____)
# Open engine in context manager
# Perform query and save results to DataFrame: df
with engine.connect() as con:
rs = con.execute(____)
df = pd.DataFrame(____)
df.columns = ____
# Print the head of the DataFrame df
print(df.head())