この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:3
ページ更新者:T
更新日時:2019-06-15 12:51:53

タイトル: 素のSQLを直接実行する方法
SEOタイトル: 【Django】素のSQLを直接実行する方法(モデル使用/未使用)

この記事の要点
  • Django ORM から素の SQL を直接実行する方法
  • モデル経由: User.objects.raw('SELECT id, name FROM user WHERE id = %s', [id])
  • DB 直接: from django.db import connection; cursor = connection.cursor(); cursor.execute(...)
  • SQL インジェクション対策: 値はプレースホルダ (%s) でバインド

 

モデル使用

id = 1

User.objects.raw('SELECT id, name FROM user WHERE id= %s', [id])

 

モデル未使用

from django.db import connection

...

id = 1

with connection.cursor() as cursor:
   
cursor.execute('SELECT id, name FROM user WHERE id = %s', [id])
    row = cursor.fetchone()

複数レコードを取得する場合は fetchone ではなく fetchall を使用する。

from django.db import connection

...

id = 1

with connection.cursor() as cursor:
   
cursor.execute('SELECT id, name FROM user WHERE id = %s', [id])
    row = cursor.fetchall()