【Python】 Djangoモデルでデータベース・アクセス:SQLとの対応編
Python 2.5, Django 0.96
環境構築がまだの人はここを参考に。
【Python】 Djangoのインストールと設定
models.pyについては
【Python】 Djangoモデルでデータベース・アクセス:宣言編
1. INSERT/UPDATE
INSERT
import models
my_obj = models.MyObj(name='ぱいそん', age='31')
my_obj.save()
UPDATE
import models
my_obj = models.MyObj.objects.get(100)
my_obj.age = 21
my_obj.save()
2. SELECT
全部
import models
my_objs = models.MyObj.objects.all()
主キーで
import models
my_obj = models.MyObj.objects.get(100)
値一致で (WHERE name='パイソン')
import models
my_objs = models.MyObj.objects.filter(name='ぱいそん')
値比較で (WHERE age>=20)
import models
my_objs = models.MyObj.objects.filter(age__gte=20)
アンダースコア「_」は2個。
__gte: >=
__lte: <= __gt: >
__lt: < ソート (ORDER BY age)
import models
my_objs = models.MyObj.objects.filter(age__gte=20).order_by('age')
ORDER BY age DESCの時はorder_by('-age')
制限 (LIMIT 10)
*kawasaqさんのご指摘により訂正。ありがとうございます。
import models
my_objs = models.MyObj.objects.filter(name='ぱいそん')[:10]
[10]→[:10]
複数条件を指定
import models
my_objs = models.MyObj.objects.filter(name='ぱいそん').filter(age__gte=20).order_by('-age')[2]

2 件のコメント:
制限 (LIMIT 10)のところのコードは、
import models
my_objs = models.MyObj.objects.filter(name='ぱいそん')[:10]
(配列のスライス)です。
ご指摘ありがとうございます。
my_objs = models.MyObj.objects.filter(name='ぱいそん')[10]
だと、オフセット扱いになってしまいます。
limitは
my_objs = models.MyObj.objects.filter(name='ぱいそん')[:10]
です。
参考:Djangoドキュメント
コメントを投稿
登録 コメントの投稿 [Atom]
この投稿へのリンク:
リンクを作成
<< ホーム