SQLAlchemy でテーブルを作成する
これまでに、Table オブジェクトを使って既存のデータベースからテーブルをリフレクトしました。では、新しいテーブルを作成したい場合はどうすればよいでしょうか?この場合も Table オブジェクトを使いますが、autoload と autoload_with のパラメータを Column オブジェクトに置き換える必要があります。
Column オブジェクトは、名前、任意のフォーマットを伴う SQLAlchemy の型、そして制約のための任意のキーワード引数を受け取ります。
テーブルを定義するとき、動画で Jason が Column('name', String(255)) のようにして String の最大長として 255 を渡していたことを思い出してください。動画のスライドを見直すのも役立ちます。
テーブルを定義したら、メタデータの .create_all() メソッドを使い、エンジンを唯一の引数として渡すことで、データベースにテーブルを作成できます。さっそくやってみましょう!
この演習はコースの一部です
Pythonで学ぶデータベース入門
演習の手順
sqlalchemyからTable、Column、String、Integer、Float、Booleanをインポートします。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))