Python+SQLAlchemy+MySQLでORマッピング 〜 select

「Python+SQLAlchemy+MySQLでORマッピング」の続き。

次のようにして、条件検索が出来る。
テーブル指定は、select()の引数に[Tableオブジェクト]を指定する。
列にアクセスするには、「Tableオブジェクト.c.列名」とする。

import sqlalchemy as dbMapper
・・・・・・・

url = 'mysql://ユーザ名:パスワード@IPアドレス/DB名?charset=utf8'

# Engineおよびconnectionの取得
engine = dbMapper.create_engine(url, echo=True)
conn = engine.connect()

# MetaData の生成
meta = MetaData()

# Engineに結びつける
meta.bind = engine

# SQLAlchemyのTableを使用して、データベースのテーブル定義からテーブルオブジェクトを作成する
sample_table = Table('テーブル名', meta, autoload=True)

#### SQLによるselectサンプル ####
# 必要モジュールのインポート
from sqlalchemy.sql import select

# 全検索の定義および実行
selectQuery = select([sample_table])
executeResult = conn.execute(selectQuery).fetchall()
for row in executeResult:
    print(row)

# whereを使用した条件検索の定義および実行
selectWhereQuery = select([sample_table.c.name]).where(sample_table.c.code == 1001)
executeResult = conn.execute(selectWhereQuery).fetchall()
for row in executeResult:
    print(row)

# Like検索の定義および実行
selectWhereLikeQuery = select([sample_table.c.name]).where(sample_table.c.code.like('%10'))
executeResult = conn.execute(selectWhereLikeQuery).fetchall()
for row in executeResult:
    print(row)

詳細は本家のマニュアル「SQL Expression Language Tutoria」を参照。