Wenn Sie eine Rohabfrage in Django ausführen möchten, können Sie dies einfach mit raw () tun. Referenz: Durchführen von SQL-Rohabfragen
models/users.py
import django.db from models
class Users(models.Model):
name = models.CharField()
age = models.IntegerField()
sex = models.CharField()
Um Benutzer über 40 Jahre in die Benutzertabelle aufzunehmen
sql = "SELECT * FROM users WHERE age >= 40"
users = Users.objects.raw(sql)
Das Ergebnis ist das gleiche wie unten.
users = Users.objects.filter(age__gte=40)
Sie können auch Parameter angeben und ausführen.
sql = "SELECT * FROM users WHERE age >= %s"
users = Users.objects.raw(sql, [40])
Bei Angabe im Wörterbuchtyp. Was ist im obigen Fall der Wert, wenn mehrere Parameter vorhanden sind? Da es schwer zu verstehen ist, wird Folgendes empfohlen.
sql = "SELECT * FROM users WHERE age >= %(age)s AND sex = %(sex)s"
params = {"age": 40, "sex": "male"}
users = Users.objects.raw(sql, params)
Recommended Posts