DjangoのMySQLのリンク
Djangoプロジェクトは、私たちがリンクしたい、あなたがする必要がある、組み込みのデータベースSQLite3の、MySQLを作成することです設定settings.pyを変更します
1.は、MySQLに良いデータベースを作成しますDjangoプロジェクトは、データベースを作成しません、モデルクラスのmodels.pyに対応したテーブルを作成します。
2. プロジェクトファイルにsettings.pyファイルは、見つけDATABASES
財産、MySQLの設定パラメータを
DATABASES = {
'default': {
# 将数据库引擎修改成 mysql
'ENGINE': 'django.db.backends.mysql',
# 数据库名称
'NAME': 'django_test',
# 数据库所在的主机地址
'HOST': '127.0.0.1',
# MySQL服务的端口号
'PORT': 3306,
'USER': 'root',
'PASSWORD': 'Ad123',
'CHARSET': 'utf8'
}
}
3. プロジェクトの次のファイルやアプリ(アプリケーション)を見つける__init__.py
ように構成MySQLを
注意:重点!重点!重点!
import pymysql
# 将数据库引擎调整为MySQL
pymysql.install_as_MySQLdb()
対応するアプリ(アプリケーション)4. models.py
クラスファイルに対応する書き込みデータベーステーブルへ
from django.db import models
# 模型类都需要继承 models.Model 类
class Book(models.Model):
# AutoField 表示是int数据类型,auto_increment自增长列,primary_key 表示主键
b_id = models.AutoField(primary_key=True)
# CharField 表示varchar数据类型,必须给 max_length 赋值,表示字符长度
book_name = models.CharField(max_length=64)
# IntegerField 表示int数据类型, default 表示默认值
book_price = models.IntegerField(default=0)
ここでは、オブジェクト・リレーショナル・マッピングを使用することであるORM
ORM(オブジェクトリレーショナルマッピング)オブジェクト・リレーショナル・マッピング:オブジェクトと地図データベースとの間で説明した実施形態を使用することにより、オブジェクト指向のオブジェクト言語プログラムが自動的にリレーショナル・データベースに永続。
基本的にデータを別の形式に一つの形式から変換されたこともパイソン白、オブジェクト指向構文のドット文字(オブジェクト属性)簡単かつ迅速に操作するデータベース操作を許可しない、人気の用語、データ
パイソン | MySQLの |
---|---|
クラス(クラス) | データテーブル(表) |
オブジェクト(物体) | レコード(テーブル内のデータ・レコードの列) |
プロパティ(属性) | フィールド(列) |
5.ファイル名を指定して実行は、ターミナルウィンドウまたはpycharmにcmdとデータベースの移行(同期)コマンド
注意:重点!重点!重点!
# python3 是python解释器名称
# 将对数据库的操作记录到项目中的migrations文件夹下的文件中,此时并没有同步到到数据库
python3 manage.py makemigrations
# 将对数据库的操作同步到MySQL中
python3 manage.py migrate
- 必ず下に対応するプロジェクトファイルを実行する二つのコマンド
- 場合、これらの2つのコマンドは、一般的に、ペアに不可欠です
- 開発プロセスの間に、限りmodels.pyは、データベースに関連付けられたコードを変更すると、あなたは、2つのコマンドを再実行しなければなりません models.pyとそのデータベースレコード一貫確保するために
Djangoのテーブルの操作 - CRUD
操作models.pyファイル
クラスに対応する表1の増加の増加
2.フィールドを追加したり、対応するクラスを見つけるために、フィールドテーブルを変更するには、クラス属性パラメータ調整ができ、例えば、
# 默认所有列都是非空,允许为空,null=True
book_price = models.IntegerField(null=True)
# 默认所有列没有默认值,增加默认值,default=默认值
press_addr = models.CharFiels(default='aaa')
クラスのコメントに対応し、テーブルを削除します。3.
上記の操作は、実行する必要があります!!!処理が完了した後、データベース移行(同期)コマンドを実行します
Djangoのデータ操作 - チャールズCRUD
1.データ操作 - お問い合わせ
- モデル。クラス名.objects.filter()クエリ条件
# 当前类是Book类
# filter() 有返回值,是一个列表;没有参数(查询所有)或多个参数,参数之间关系对应SQL语句为:where 参数1=参数值1 and 参数2=参数值2 and …… and 参数n=参数值n
# res = models.Book.objects.filter(book_name='钢铁是怎样炼成的')
# select * from book where book_name='青年文摘' and book_price=1234;
res = models.Book.objects.filter(book_name='青年文摘', book_price=1234)
# 可通过索引取值但是索引不能为负数,不推荐使用索引取值,可使用first()
book_obj = res.first() # 取第一条记录
注:あなたが結果を得られない場合は、フィルタ法、与えられていない、それは空のリストを返します。
- モデル。クラス名.objects.all()すべてを照会します
# 等同于 select * from book
# 返回值是一个列表,支持索引,但不支持负索引
res = models.Book.objects.all()
2.データ操作 - 増加
- 类.objects.create()
# create() 有返回值,是当前被创建的对象本身
book_obj = Book.objects.create(book_name='Django入门', book_price=1234)
# 打印创建的对象, 对象的book_name 属性
print(book_obj, book_obj.book_name)
- オブジェクト.SAVEを経由してオブジェクトを作成します()
# 创建Book 对象
book_obj = Book(book_name='redis入门', book_price=4321)
# 通过对象.save()方法增加记录
book_obj.save()
3.データ操作 - 削除
'''
1.先查询出结果,
2.通过delete() 删除
'''
# sql语句:delete from book where b_id=2;
models.Book.objects.filter(b_id=2).delete()
# 由于filter() 的返回值是一个列表,这个方式相当于是批量删除,不建议删除记录
4.データ操作 - レビュー
- バッチ更新(推奨方法)
'''
1.先查询出结果
2.通过update() 更新
'''
# sql语句:update book set book_name='aa', book_price=2314 where b_id=3;
models.Book.objects.filter(b_id=3).update(book_name='aa',book_price=2314)
# 由于filter() 的返回值是一个列表,这个方式相当于是批量修改
- まず、(お勧めしません、あなたが理解することができます)セーブ)データオブジェクトを取得して、オブジェクトのプロパティを変更し、(保存バインドされたメソッドのオブジェクトを呼び出します
# 1.获取数据对象
book_obj = models.Book.objects.filter(b_id=3).first()
# 2.修改对象属性
book_obj.book_name = 'bb'
book_obj.book_price = 3124
# 3.调用对象的绑定方法 save
book_obj.save()