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

Connected

演習

データベースからテーブルを自動ロードする

SQLAlchemy では、リフレクションと呼ばれる機能を使って、データベースからテーブルを自動的に読み込めます。リフレクションとは、データベースを読み取り、その情報に基づいてメタデータを構築するプロセスです。手作業で Table を作成するのとは逆で、既存のデータベースを扱う際にとても便利です。

リフレクションを行うには、まず MetaData オブジェクトをインポートして初期化します。MetaData オブジェクトには、データベースに格納されているテーブルの情報が含まれます。リフレクションの間に、MetaData オブジェクトは反映されたテーブルの情報で自動的に埋められるため、反映の前に MetaData() を呼び出して初期化するだけで十分です。

また、SQLAlchemy パッケージから Table オブジェクトをインポートする必要があります。次に、この Table オブジェクトを使ってエンジンからテーブルを読み込み、カラムを自動ロードし、メタデータを埋めます。これは Table() を1回呼び出すだけで行えます。このように Table オブジェクトを使うのは、関数に引数を渡すのに近いイメージです。たとえば、エンジンでカラムを自動ロードするには、Table() にキーワード引数 autoload=True と autoload_with=engine を指定します。

最後に、作成したオブジェクトの情報を確認するには、repr() 関数を使います。任意の Python オブジェクトに対して、repr() はそのオブジェクトの文字列表現を返します。SQLAlchemy の Table オブジェクトの場合、メタデータに含まれるそのテーブルの情報が返されます。

この演習では、engine 上で利用可能な "census" テーブルをリフレクトし、census という変数に格納してください。前の演習で作成したエンジンを生成するコードはすでに用意されています。

指示

100 XP
  • sqlalchemy から Table と MetaData をインポートします。
  • MetaData オブジェクト metadata を作成します。
  • Table オブジェクトを使って census テーブルをリフレクトします。引数は次のとおりです:
    • 文字列のテーブル名('census')。
    • いま初期化したメタデータ。
    • autoload=True
    • 自動ロードに使うエンジン(この場合は engine)。
  • repr() 関数を使って census の詳細を出力します。