データベースの操作(CRUD操作)
CRUDは、演算処理を行うための時間(作成)、クエリ(読み取り)及びアップデート(更新)を読み取り、および削除の増加を指す(削除)
マネージャオブジェクト
1.各モデルのクラスはmodelss.Modelから継承し、同様のオブジェクトが継承されたオブジェクトであるだろう。このオブジェクトは変更して再検索2.データベース・マネージャー・オブジェクトへの追加や削除がモデルマネージャによって達成することができると呼ばれています
クラスのエントリ(models.Model): ... Entry.objects.create(...) #は、マネージャオブジェクトであります
二つは、データオブジェクトを作成します
DjangoはPythonオブジェクトとしてデータベーステーブル内のデータを表現する直感的な方法を使用し
各レコードにデータを作成すると、データオブジェクトを作成することです
1.Entry.objects.create(属性値= 1 2、...属性、1 = 1値)
成功:作成したエンティティオブジェクトを返します
失敗:例外をスロー
2.エントリエンティティオブジェクトを作成し、保存するために)(saveを呼び出します
OBJ =エントリ(プロパティ= valueプロパティ= 値) OBJ。属性 = 値 obj.save()は 値を返さない、保存の成功の後、objが再割り当てされます
試し: abook = Book.objects.create(タイトル= 「パイソン」、パブ= 「清華大学プレス」) 印刷(abook) を除く: 印刷(" オブジェクトの作成に失敗しました")
試し: abook =ブック(タイトル= 「パイソン」、パブ= 「清華大学プレス」) abook.save 印刷(abook) を除く: 印刷(" オブジェクトの作成に失敗しました")
試し: abook = ブック() abook.title = ' パイソン' abook.pub = ' 清華大学を押して' abook.save 印刷(abook) を除く: 印刷(" オブジェクトの作成に失敗しました")
三つのDjangoのシェルを使用して
ジャンゴで呼ばれるプロジェクトのインタラクティブな操作を提供することにあるDjango Shell
プロジェクトコードと対話モードに対応する動作を実行する能力を
Djangoのシェルが直接参照してください動作するように書かれたコードを使用して置換することができます
簡単な操作だけでDjangoのシェルで、モーダルリモートで実行することはできません
DjangoのシェルIPython形式のインタフェースを起動するには、次のものが表示されます。
$のpython3 manage.pyシェル manage.pyシェル のPython 3.6.1(v3.6.1:69c0db5050、2017年3月21日、午前1時21分04秒) を入力' 著作権'、' クレジット' または ' ライセンス' のためのより多くの情報 IPython 6.1.0 -強化された対話型のPython。タイプ" ?" のためのヘルプ。 IN [ 1 ] における[ 2]:から書店インポートモデル [IN 3]:models.Book.objects.create(タイトル= " パイソン" ) OUT [ 3]:<ブック:ブックオブジェクト> の[ 4]:本= models.Book.objects.create(タイトル= ' C ++ ' ) [IN:4] プリント(ブック) ブックオブジェクト
四のクエリデータ
マネージャは、オブジェクトを使用する必要があるデータベースを照会
Entry.objects Managerでインターフェイスメソッドを照会するために呼び出します
方法 |
使い方 |
効果 |
返却値 |
すべて() |
Entry.objects.all() |
データ入力は、すべてのエンティティを問い合わせます |
クエリセットコンテナ・オブジェクト・インスタンスは、エントリ内部に格納され |
値( '1列'、 '第2列') |
Entry.objects.values(...) |
クエリおよび列のデータ部分を返します XXXカラム1、カラム2から選択 |
クエリセット クエリ結果のコンテナ、コンテナメモリ辞書を返し、データ・ディクショナリの各代表、 フォーマット:{ '列1':1の値、 '列2':2}の値 |
values_list( 'カラム1'、 '2列') |
Entry.objects.values_list(...) |
タプルの形式でクエリ結果を返します。 |
内部に保存されたクエリセットのコンテナオブジェクト、
|
ORDER_BY |
Entry.objects.order_by( ' - 列'、 '列') |
そして、すべての()メソッドは、それが選択ソートフィールドに基づいてSQL文のORDER BY句を使用して結果を照会します 注:デフォルトは昇順にソートされ、降順での列の前に増加する必要があります「 - 」を示しています |
|
フィルタ(条件) |
Entry.objects.filter(属性は値1 = 1、属性値= 2 2) |
クエリ複数のレコードの条件によると、 |
クエリセットコンテナ・オブジェクト・インスタンスは、エントリ内部に格納され |
#は、すべての検索 から書店の子インポートモデル ブックス = )models.Book.object.all( のためのブックにブック: 印刷(「タイトル」、book.title、「プレス:」、book.pub) ###### ################ #は、指定した列を(辞書表される)を返す から書店の子インポートモデル ブックス = models.Book.objects.values(「タイトル」、「パブ」) のために予約するにはブック: 印刷(" タイトル"、ブック[ " タイトル" ]、' 出版社:'、ブック[ ' パブ' ]) 印刷(" ブック= " 、ブック) ############## ######### #指定した列(タプル表現)を返します から書店の子インポートモデルの ブック = models.Book.objects.values_list(「タイトル」、「パブ」) のための書籍で:書籍 の印刷を(" ブック= "、ブック) #( 'Pythonの'、 '清華大学プレス')... ####################### #のソートクエリ から本屋の子インポートモデル ブックス = models.Book.objects.order_by(" 価格。" ) のための書籍での本: 印刷(" タイトル:"、book.title、' 価格:' 、book.price) ####### ################ #の条件クエリ複数のレコードに従って #著書「清華大学を押して」1.お問い合わせプレスブックス から書店の子インポートモデル 書籍 = models.Book.objects.filter(パブ= 「清華大学出版」) のための書籍での本: 印刷(「:タイトル」、book.title) #1 2.クエリIDエンティティの著者とのisActive真の 作者= Author.objects.filter(ID = 1、のisActive =真)
クラスで定義されたモデルdef __str__(self):
のメソッドは、カスタムデフォルトの文字列を指定できます
クラスブック(models.Model): タイトル = ... DEF __str__ (自己): 戻り値 " タイトル:%sは、出版社:%sで、価格:%S "%(self.title、self.pub、セルフ。価格)
5つのフィールドを探します
シックス・クエリ述語
七は、データレコードを変更します
八、削除、レコード
ナイン集計クエリ
Fオブジェクト
オブジェクトQ - Q()
ネイティブデータベース操作方法
#により #models.Tb1.objects.create(= C1 'XX'、C2 = 'OO')データ・ディクショナリのデータタイプを追加kwargsからを受け入れることができる** #OBJ = models.Tb1(= C1 'XX'、C2 = 'OO') #1 obj.save() #のチェック #models.Tb1.objects.get(ID = 123)単一のデータ・エラーを取得することはお勧めしません(存在しない) #models.Tb1.objects.all()すべてを取得 #をmodels.Tb1.objects.filter(名前=「7」)が指定された条件データの取得 #穿刺 #models.Tb1.objects.filter(名=「7」)を。削除()条件指定されたデータの削除 #の変更 #のモデル。 Tb1.objects.filter(名前= '七')。アップデート(性別= '0') #更新されたデータは、指定された条件、サポートkwargsから** #= models.Tb1.objects.get OBJ(ID = 1) #obj.c1 = '111' #obj.save()#単一の変更されたデータ