LoginSignup
4
3

More than 3 years have passed since last update.

【Django】SQLを指定してデータを取得する方法。

Posted at

Djangoで生のクエリを実行したい場合はraw()を使えば簡単に実現できるみたい。
参考:Performing raw SQL queries

サンプルModel

models/users.py
import django.db from models
class Users(models.Model):
    name = models.CharField()
    age = models.IntegerField()
    sex = models.CharField()

SQLを指定してデータ取得

usersテーブルの年齢が40以上のユーザーを取得する場合

sql = "SELECT * FROM users WHERE age >= 40"
users = Users.objects.raw(sql)

下記と同じ結果となります。

users = Users.objects.filter(age__gte=40)

パラメーターを指定

パラメーターを指定して実行することもできます。

sql = "SELECT * FROM users WHERE age >= %s"
users = Users.objects.raw(sql, [40])

辞書型で指定する場合。上記だと、複数のパラメーターがあったときに何個目がどの値だっけ?とわかりにくくなるので、下記がおすすめ。

sql = "SELECT * FROM users WHERE age >= %(age)s AND sex = %(sex)s"
params = {"age": 40, "sex": "male"}
users = Users.objects.raw(sql, params)
4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3