Django 学習 Day10

1. 集計クエリ

集計クエリは、データ テーブル内のフィールドのデータに対する部分的または完全な統計クエリを指します。差分書籍データテーブル内の全書籍の平均価格、全書籍の合計数などは集計クエリを使用する必要があります。

集計クエリは次のように分割されます。
(1) テーブル全体の集計

集計関数のインポート:
django.db.models import から *
集計関数: Sum、Avg、Count、Max、Min

構文:
MyModel.objects.aggregate(結果変数名=集計関数('列名'))

ここに画像の説明を挿入

結果の変数名は、SQL ステートメントのエイリアスとしての Count(*) です。つまり、エイリアスはパラメータ内の結果変数名のパラメータです。辞書形式で表現することで、プログラム内でのデータ検索やデータ取得を行うのに便利です。

(2) グループ集計
構文:
QuerySet.annotate (結果変数名 = 集計関数('列名'))
戻り値:
QuerySet

###2. ネイティブ データベース操作
スキーム 1:
クエリ:
MyModel.objects.raw() を直接使用してデータベースをクエリします。
構文:
MyModel.objects.raw(SQL ステートメント、接続パラメーター)
戻り値:
RawQuerySet コレクション オブジェクト [ループなどの基本的な操作のみをサポート]
例:
ここに画像の説明を挿入
ここの項目はオブジェクトであることがわかります。

Django は公式に、クエリに SQL ステートメントを使用することを推奨していません。Web アプリケーションに重大な欠陥や問題を引き起こす SQL インジェクションの脆弱性が存在する可能性があるためです。

したがって、SQL ステートメントのスプライシング パラメーターでは、パラメーター化によって SQL インジェクション攻撃を防ぐことができます。

例:
パラメーターの受け渡しにパラメーター化を使用しない場合、すべての書籍情報がエクスポートされます。
ここに画像の説明を挿入
パラメータ化されたクエリを有効にすると、SQL インジェクション攻撃を防ぐことができました。
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_27180763/article/details/128491513