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ファイルを作成できます
*テーブルに列を追加する場合、既存の列にデータが存在する可能性があるため、新しい列には新しい列に対応するデータを指定する必要があります。
-
値を手動で入力します
-
デフォルト値を設定する
size = models.IntegerField(default=2)
-
空であってもよい
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)