Django学習記録:ORMを使ってMySQLデータベースを操作し、データの追加、削除、変更、クエリを完了する

Django学習記録:ORMを使ってMySQLデータベースを操作し、データの追加、削除、変更、クエリを完了する

データベース操作

MySQLデータベース+pymysql

Django はデータベースの開発と運用がより簡単で、ORM フレームワークが内部で提供されます。

サードパーティモジュールをインストールする
pip install mysqlclient

ORM でできること:

1. データベース内のテーブルを作成、変更、削除します (SQL ステートメントは作成しません)。【データベースを作成できません】

2. テーブル内のデータを操作します (SQL ステートメントを記述する必要はありません)。

1. 独自のデータベースを作成する

1) MySQLサービスを開始します

2) 独自のツールを使用してデータベースを作成する

2. Django がデータベースに接続します

settings.py ファイルの設定と変更: ローカルの mysql データベースがここに接続されています

DATABASES = {
    
    
    'default': {
    
    
        'ENGINE': 'django.db.backends.mysql',
        'NAME':  'dbname', # 数据库名字
        'USER':  'root',
        'PASSWORD':  'xxxxxx',
        'HOST':  'localhost',
        'PORT':  3306,
    }
}
3. Django 操作テーブル
  • テーブルを作成する

  • テーブルの削除

  • テーブルの変更

    テーブルの作成: models.py ファイル内:

class UserInfo(models.Model):
    name = models.CharField(max_length=32) # charfield 字符串类型
    password = models.CharField(max_length=64)
    age = models.IntegerField() # IntegerField 整数类型

MySQL での実行と同等

create table app01_userinfo(
    id bigint auto_increment primary key,
    name varchar(32),
    password varchar(64),
    age int
);

次に、ターミナルでコマンドを順番に実行します (注: アプリは事前に登録する必要があります)。

python manage.py makemigrations
python manage.py migrate

mysqlでapp01_userinfoファイルを作成できます

ここに画像の説明を挿入

*テーブルに列を追加する場合、既存の列にデータが存在する可能性があるため、新しい列には新しい列に対応するデータを指定する必要があります。

  1. 値を手動で入力します

  2. デフォルト値を設定する

    size = models.IntegerField(default=2)
    
  3. 空であってもよい

    data = models.IntegerField(null=True, blank=True)
    

開発中にテーブル構造を調整したい場合:

  • models.pyファイル内のクラスを操作するだけです。

  • ターミナルでコマンドを実行

    python manage.py makemigrations
    python manage.py migrate
    

データの追加、削除、変更、確認

from app01 import models

1.新規作成

    # ###新建###
    models.Department.objects.create(title="销售部")
    models.Department.objects.create(title="IT部")
    models.Department.objects.create(title="运营部")
    models.UserInfo.objects.create(name="dumpling", password="123", age="22")
    models.UserInfo.objects.create(name="noodles", password="111", age="20")

2. 削除

# ###删除###
    models.UserInfo.objects.filter(id=3).delete()
    models.Department.objects.all().delete()

3.閲覧(データ取得)

    ###获取数据###
    #获取的是列表,列表是一行一行的数据
    #data_list = [行(对象) 行 行]   QuerySet类型
    data_list = models.UserInfo.objects.all()
    for obj in data_list:
            print(obj.id, obj.name, obj.password, obj.age)

    # 寻找id=1的数据。data_list = [对象,],这个方法取到的还是QuerySet类型
    data_list = models.UserInfo.objects.filter(id=1)
    # 取对象中的第一个,这个方法就能直接将第一行对象取出来
    row_obj = models.UserInfo.objects.filter(id=1).first()
    print(row_obj.id, row_obj.name, row_obj.password, row_obj.age)

4.アップデート

	models.UserInfo.objects.all().update(password=999)
    models.UserInfo.objects.filter(id=2).update(age=999)

おすすめ

転載: blog.csdn.net/weixin_47723114/article/details/132046244