1. 学ぶ
  2. /
  3. コース
  4. /
  5. Pythonで学ぶデータベース入門

Connected

演習

SQLAlchemy でテーブルからデータを選択する

ここまで順調です! いよいよ SQLAlchemy を使って最初の SELECT 文を作成していきます。SQLAlchemy は、データベースとやり取りするための「Python らしい」便利な方法を提供します。前の演習では生の SQL を使ってデータベースに直接クエリを投げましたが、SQLAlchemy を使う場合は代わりに Table オブジェクト経由で操作し、SQLAlchemy が適切な SQL 文に翻訳してくれます。そのため、MySQL や PostgreSQL など従来の SQL の方言ごとの違いを意識するのではなく、SQLAlchemy の Pythonic なフレームワークを活用して、ワークフローを簡素化し、より効率的にデータへクエリできます。こうした理由から、すでに従来の SQL に慣れている方にとっても学ぶ価値があります。

この演習では、再び census テーブルから全レコードを取得するステートメントを組み立てます。今回は、sqlalchemy モジュールの select() 関数を使います。この関数は、必須引数としてテーブルまたは列のリストを 1 つだけ受け取ります(例: select([my_table]))。

さらに、.fetchmany() に size 引数を指定して、ResultProxy から一部のレコードだけを取得します。

Table と MetaData はすでにインポート済みです。メタデータは metadata、データベースへの接続は connection として利用できます。

指示

100 XP
  • sqlalchemy モジュールから select をインポートします。
  • census テーブルをリフレクトします。このコードはすでに用意されています。
  • select() 関数を使って、census テーブル内の全レコードを取得するクエリを作成します。これには、select() に census を唯一の要素とするリストを渡します。
  • 実際に生成される SQL クエリを確認するために stmt を出力します。このコードは用意済みです。
  • census テーブルから 10 件のレコードを取得し、results に保存します。次の手順で行います。
    • connection の .execute() メソッドに stmt を渡して ResultProxy を取得します。
    • connection.execute(stmt) に対して適切な size 引数を指定して .fetchmany() を使い、ResultSet を取得します。