Django建立的項目自帶的數據庫是SQLite3,咱們想要連接MySQL的話,須要更改settings.py中的配置python
1.在MySQL中建立好數據庫,Django項目不會建立數據庫,只會根據models.py中的模型類建立對應的表mysql
2.在項目文件下的settings.py文件中,找到 DATABASES
屬性,配置MySQL相關參數redis
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.找到項目文件下或app(應用程序)下的__init__.py
配置成MySQLsql
注意:重點!重點!重點!數據庫
import pymysql # 將數據庫引擎調整爲MySQL pymysql.install_as_MySQLdb()
4.在對應的app(應用程序)下的 models.py
文件中編寫數據庫表對應的類django
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對象關係映射app
ORM(Object Relational Mapping) 對象關係映射:經過使用描述對象和數據庫之間映射的方式,將面嚮對象語言程序中的對象自動持久化到關係數據庫中。code
本質上就是將數據從一種形式轉換到另一種形式,通俗來說,可以讓一個不會數據庫操做的小白也能經過Python面向對象語法,句點符(對象.屬性)來簡單快捷的操做數據對象
Python | MySQL |
---|---|
類(class) | 數據表(table) |
對象(object) | 記錄(數據表中的一行記錄) |
屬性(attribute) | 表字段(column) |
5.在cmd或pycharm中的Terminal窗口執行數據庫遷移(同步)命令blog
注意:重點!重點!重點!
# python3 是python解釋器名稱 # 將對數據庫的操做記錄到項目中的migrations文件夾下的文件中,此時並無同步到到數據庫 python3 manage.py makemigrations # 將對數據庫的操做同步到MySQL中 python3 manage.py migrate
在models.py文件中操做
1.增長表,增長對應的類便可
2.給表增長字段或修改字段,找到對應的類,調整類屬性的參數便可,例
# 默認全部列都是非空,容許爲空,null=True book_price = models.IntegerField(null=True) # 默認全部列沒有默認值,增長默認值,default=默認值 press_addr = models.CharFiels(default='aaa')
3.刪除表,將對應的類註釋便可
以上操做,都要執行!!!處理完畢後,執行數據庫遷移(同步)命令
1.數據操做-查詢
# 當前類是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() # 取第一條記錄
注意:filter方法若是沒有獲取到結果,不會報錯,返回的是一個空列表
# 等同於 select * from book # 返回值是一個列表,支持索引,但不支持負索引 res = models.Book.objects.all()
2.數據操做-增長
# create() 有返回值,是當前被建立的對象自己 book_obj = Book.objects.create(book_name='Django入門', book_price=1234) # 打印建立的對象, 對象的book_name 屬性 print(book_obj, book_obj.book_name)
# 建立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()