TIL #12 mysql-CRUD

5780 ワード

  • データの読み込み
    from products.models import Product
  • 次のコマンドを実行するには、アウトラインを入力する必要があります.
    pythonまたはterminalを閉じて再開する場合は、再入力する必要があります.

    Create

  • Product.objects.create(name='coffee', price=100, description='good')
  • Product.objects.create(name='ade', price=100)
  • Product.objects.create(name='smoothie', price=80, description='')
  • NULLと空の部分がモデルです.pyにフィールドを入力すると、(null=True、blank=True)を追加できます.
  • Read

  • すべて読み込み
    Product.objects.all()
  •   <QuerySet [<Product: Product object (1)>, <Product: Product object (2)>, <Product: Product object (3)>]>
    即時インポート
  • オブジェクトvsインポートクエリーセット(リストとして)
    Product.objects.get(id=1) == Product.objects.filter(id=1)[0]
  •   <Product: Product object (1)>
             Product.objects.filter(id=1)
      <QuerySet [<Product: Product object (1)>]>
    特定のid値
  • のみ取得
    Product.objects.get(id=1)または製品.objects.get(name='coffee')
  •   <Product: Product object (1)>
    特定のidの名前
  • を取得
    Product.objects.get(id=1).name == Product.objects.filter(id=1)[0].name
  •   coffee
  • Product.objects.filter(id=1)または製品.objects.filter(name='coffee')
  • フィルタを使用して値をロードすることはできません.
  •   <Product: Product object (1)>

    Update


  • 1番nameを変更
    例1)
    Product.objects.filter(id=1).update(name='ice')
    (id=1ではなくname=「coffee」と入力できます.)
    例2)または、変数にオブジェクトを配置して変更する
    a1 = Product.objects.get(id=1).name
    a1.name = ice
  •    1   <-- True(성공적으로 바뀜, 0일 경우는 실패했다는 의미)
    変数オブジェクト全体を変数に含める場合は、getおよびfilterのいずれでもよい.
    a2 = Product.objects.get(id=1)
    a2 = Product.objects.filter(id=1)
  • 3号価格、2つの説明が同時に変更されました
    Product.objects.filter(id=3).update(price=100, description='very very very cold')
  •    1
  • 1号説明は空白のまま
    Product.objects.filter(id=1).update(description=None)
  •    1

    Delete


  • 行全体を削除
    Product.objects.get(id=1).delete()
    Product.objects.filter(id=1).delete()

  • 同じ値を削除
    Product.objects.get(price=100).delete()
    上の表にはprice=100が3つあるので削除しません.
    price=100ですべて削除したい場合は、
    Product.objects.filter(price=100).delete()
    注意:
    Project.objects.filter().delete() == Proejct.obejcts.all().delete
    フィルタに値を入力しないと、テーブル全体が削除されます.
  • テーブルの一部を空にする場合は、update()をNoneまたは「」にする必要があります.
    条件:モデリングでは、フィールド値を(null=True、blank=True)として事前に指定する必要があります.

    その他のモデルメソッドタイプ

    exclude() , values() , values_list() , count() , first() , last() , exists() 칼럼이름__isnull=True:null値フィルタ칼럼이름__exact=''칼럼이름__contains='coffee':検索
    例)
    Product.objects.filter(name__isnull=True).exclude(description__exact='').count()
    名前null&説明が空のテーブルcount
    Product.objects.exclude(name__isnull=True)
    Product.objects.exclude(name__exact='')