Si vous souhaitez exécuter une requête brute dans Django, vous pouvez facilement le faire en utilisant raw (). Référence: Exécution de requêtes SQL brutes
models/users.py
import django.db from models
class Users(models.Model):
name = models.CharField()
age = models.IntegerField()
sex = models.CharField()
Pour obtenir les utilisateurs de plus de 40 ans dans le tableau des utilisateurs
sql = "SELECT * FROM users WHERE age >= 40"
users = Users.objects.raw(sql)
Le résultat est le même que ci-dessous.
users = Users.objects.filter(age__gte=40)
Vous pouvez également spécifier des paramètres et exécuter.
sql = "SELECT * FROM users WHERE age >= %s"
users = Users.objects.raw(sql, [40])
Lors de la spécification du type de dictionnaire. Dans le cas ci-dessus, quelle est la valeur quand il y a plusieurs paramètres? Comme cela devient difficile à comprendre, ce qui suit est recommandé.
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