SQLAlchemy 続き
普通にSELECT文。
まずは適当にテーブルを作ってデータを適当に投入。
mysql> select * from maker;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- +
-
-
-
-
-
-
-
-
-
-
-
-
-
id | name |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- +
-
-
-
-
-
-
-
-
-
-
-
-
-
1 | SOMY |
2 | MEC |
3 | HiTouth |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- +
-
-
-
-
-
-
-
-
-
-
-
-
-
mysql> select * from goods;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- +
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
id | maker_id | name |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- +
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
1 | 1 | Walkman |
2 | 1 | AIBO |
3 | 1 | PSP |
4 | 2 | PC-FX |
5 | 2 | スパコン |
6 | 3 | パンポン |
7 | 3 | 気になる木 |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- +
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Tableインスタンスとマッピングするクラスを定義してある状態で...
という感じでSELECT。
for obj in sess.query(Maker).order_by(Maker.id):
print obj.id, obj.name1 SOMY
2 MEC
3 HiTouth
この場合、実際にバックグラウンドで実行されるSQLは
SELECT maker.id AS maker_id, maker.name AS maker_nameこんな感じ。
FROM maker ORDER BY maker.id
次はSQLでいうとこのWHERE。
for obj in sess.query(Goods).filter_by(maker_id=1).order_by(Goods.id):
print obj.id, obj.maker_id, obj.name
1 1 Walkman
2 1 AIBO
3 1 PSP
別の書き方。
結果はさっきと同じ。
for obj in sess.query(Goods).filter(Goods.maker_id==1).order_by(Goods.id):
print obj.id, obj.maker_id, obj.name
LIKEを使う
for obj in sess.query(Maker).filter(Maker.name.like('%M%')).order_by(Maker.id):
print obj.id, obj.name
複数条件(AND)
from sqlalchemy import and_
for obj in sess.query(Goods).filter(and_(Goods.maker_id<3, Goods.name.like('%FX%'))).order_by(Goods.id):
print obj.id, obj.maker_id, obj.name