データベースの操作(CRUD操作)

データベースの操作(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)
 を除く印刷" オブジェクトの作成に失敗しました"
例1
試し
    abook =ブック(タイトル= パイソン、パブ= 清華大学プレス
    abook.save 
    印刷(abook)
 を除く印刷" オブジェクトの作成に失敗しました"
例2
試し
    abook = ブック()
    abook.title = ' パイソン' 
    abook.pub = ' 清華大学を押して' 
    abook.save 
    印刷(abook)
 を除く印刷" オブジェクトの作成に失敗しました"
例3

三つの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()#単一の変更されたデータ
基本的なCRUD操作

 

おすすめ

転載: www.cnblogs.com/maplethefox/p/11235412.html