データベースとテーブルの作成

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

Jason Myers

Co-Author of Essential SQLAlchemy and Software Engineer

データベースの作成

  • 種類によって異なる
  • PostgreSQL や MySQL には初期化用のコマンドラインツールがある
  • SQLite では、create_engine() が未存在ならデータベースとファイルを作成する
Pythonで学ぶデータベース入門

テーブルの構築

from sqlalchemy import (Table, Column, String, 
       Integer, Decimal, Boolean)

employees = Table('employees', metadata, Column('id', Integer()), Column('name', String(255)), Column('salary', Decimal()), Column('active', Boolean()))
metadata.create_all(engine)
engine.table_names()
[u'employees']
Pythonで学ぶデータベース入門

テーブルの作成

  • リフレクション時と同様に Table オブジェクトを使用
  • autoload 引数の代わりに Column オブジェクトを指定
  • MetaData の create_all() で実DBにテーブルを作成
  • 更新は Alembic や生の SQL など他ツールで対応
Pythonで学ぶデータベース入門

テーブル作成 ― 追加の列オプション

  • unique は列の全値を一意に制約
  • nullable は列が空を許可するかを指定
  • default は未指定時の既定値を設定
Pythonで学ぶデータベース入門

追加オプション付きでテーブルを構築

employees = Table('employees', metadata,
       Column('id', Integer()), 
       Column('name', String(255), unique=True, nullable=False), 
       Column('salary', Float(), default=100.00),          
       Column('active', Boolean(), default=True))

employees.constraints
{CheckConstraint(... 
Column('name', String(length=255), table=<employees>, nullable=False), 
Column('salary', Float(), table=<employees>, 
       default=ColumnDefault(100.0)), 
Column('active', Boolean(), table=<employees>, 
       default=ColumnDefault(True)), ...
UniqueConstraint(Column('name', String(length=255), 
                 table=<employees>, nullable=False))}
Pythonで学ぶデータベース入門

Let's practice!

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

Preparing Video For Download...