始める無料で始める

SQLAlchemy でテーブルを作成する

これまでに、Table オブジェクトを使って既存のデータベースからテーブルをリフレクトしました。では、新しいテーブルを作成したい場合はどうすればよいでしょうか?この場合も Table オブジェクトを使いますが、autoloadautoload_with のパラメータを Column オブジェクトに置き換える必要があります。

Column オブジェクトは、名前、任意のフォーマットを伴う SQLAlchemy の型、そして制約のための任意のキーワード引数を受け取ります。

テーブルを定義するとき、動画で Jason が Column('name', String(255)) のようにして String の最大長として 255 を渡していたことを思い出してください。動画のスライドを見直すのも役立ちます。

テーブルを定義したら、メタデータの .create_all() メソッドを使い、エンジンを唯一の引数として渡すことで、データベースにテーブルを作成できます。さっそくやってみましょう!

この演習はコースの一部です

Pythonで学ぶデータベース入門

コースを見る

演習の手順

  • sqlalchemy から TableColumnStringIntegerFloatBoolean をインポートします。
  • data という名前の新しいテーブルを作成し、列 'name'String(255))、'count'Integer())、'amount'Float())、'valid'Boolean())を定義します。Table() の第2引数は、すでに初期化済みの metadata である必要があります。
  • metadata.create_all()engine を渡して、データベースにテーブルを作成します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Import Table, Column, String, Integer, Float, Boolean from sqlalchemy
from sqlalchemy import ____, ____, ____, ____, ____, ____

# Define a new table with a name, count, amount, and valid column: data
data = Table('data', ____,
             Column(____, ____),
             Column('count', Integer()),
             Column(____, ____),
             Column(____, ____)
)

# Use the metadata to create the table
metadata.create_all(____)

# Print table details
print(repr(data))
コードを編集して実行