2008年3月18日火曜日

【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)

import models
my_objs = models.MyObj.objects.filter(name='ぱいそん')[:10]
*kawasaqさんのご指摘により訂正。ありがとうございます。
[10]→[:10]


複数条件を指定

import models
my_objs = models.MyObj.objects.filter(name='ぱいそん').filter(age__gte=20).order_by('-age')[2]

ラベル: ,

2 件のコメント:

2008年3月19日 1:31 に投稿, Anonymous kawasaq さんは書きました...

制限 (LIMIT 10)のところのコードは、

import models
my_objs = models.MyObj.objects.filter(name='ぱいそん')[:10]

(配列のスライス)です。

 
2008年4月1日 14:49 に投稿, Blogger Sein さんは書きました...

ご指摘ありがとうございます。

my_objs = models.MyObj.objects.filter(name='ぱいそん')[10]
だと、オフセット扱いになってしまいます。

limitは
my_objs = models.MyObj.objects.filter(name='ぱいそん')[:10]
です。

参考:Djangoドキュメント

 

コメントを投稿

登録 コメントの投稿 [Atom]

この投稿へのリンク:

リンクを作成

<< ホーム