定義:object relations mapping,對象關係映射。它實現了數據模型與數據庫的解耦
python
當models裏的內容發生改變時,每改變一次執行一次下邊的兩行代碼mysql
python manage.py makemigrations #只是生成一個操做記錄,相似logging日誌sql
python manage.py migrate #在數據庫中進行正正的操做,建表,刪表等數據庫
python manage.py makemigrationsdjango
python manage.py migrateapp
沒有設置時,執行鏈接Django自帶的數據庫,sqllite3翻譯
mysqldb 不支持python3.4以上版本日誌
執行包文件init文件code
django 鏈接mysql 1 settings配置文件中 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'orm02', 'USER':'root', 'PASSWORD':'666', 'HOST':'127.0.0.1', 'PORT':3306, } } 2 項目文件夾下的init文件中寫上下面內容,用pymysql替換mysqldb import pymysql pymysql.install_as_MySQLdb() 3 models文件中建立一個類 # class UserInfo(models.Model): # id = models.AutoField(primary_key=True) # name = models.CharField(max_length=10) # bday = models.DateField() # checked = models.BooleanField() 4 執行數據庫同步指令 # python manage.py makemigrations # python manage.py migrate 5 建立記錄(實例一個對象,調用save方法) def query(request): # 建立一條記錄,增 new_obj = models.UserInfo( id=2, name='子文', bday='2019-09-27', checked=1, ) new_obj.save() #翻譯成sql語句,而後調用pymysql,發送給服務端 insert into app01_userinfo values(2,'子文','2019-09-27',1) return HttpResponse('xxx')
定義:object relations mapping,對象關係映射。它實現了數據模型與數據庫的解耦orm
每一個數據庫有本身的sql語句,不通用。
1.將對象翻譯成sql語句
2.Django內置的一個pymysql客戶端將sql語句發送給mysql服務端
3.服務端拿到sql,到磁盤裏面進行數據操做
Django默認數據庫爲sqlite3,比較雞肋,設置爲mysql數據庫修改settings配置文件
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', #Django中數據庫地址 'NAME':'bms', # 要鏈接的數據庫名,鏈接前先cmd建庫 'USER':'root', # 鏈接數據庫的用戶名 'PASSWORD':'', # 鏈接數據庫的密碼 'HOST':'127.0.0.1', # 鏈接主機,默認本級 'PORT':3306, # 端口 默認3306 } }
若有必要,能夠爲本身的項目下的 app 配置單獨的數據庫,以下代碼
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME':'bms', # 要鏈接的數據庫,鏈接前須要建立好 'USER':'root', # 鏈接數據庫的用戶名 'PASSWORD':'', # 鏈接數據庫的密碼 'HOST':'127.0.0.1', # 鏈接主機,默認本級 'PORT':3306 # 端口 默認3306 }, 'app01': { #能夠爲每一個app都配置本身的數據,而且數據庫還能夠指定別的,也就是不必定就是mysql,也能夠指定sqlite等其餘的數據庫 'ENGINE': 'django.db.backends.mysql', 'NAME':'bms', # 要鏈接的數據庫,鏈接前須要建立好 'USER':'root', # 鏈接數據庫的用戶名 'PASSWORD':'', # 鏈接數據庫的密碼 'HOST':'127.0.0.1', # 鏈接主機,默認本級 'PORT':3306 # 端口 默認3306 } }
設置完後,再啓動咱們的Django項目前,咱們須要激活咱們的mysql。而後,啓動項目,會報錯:no module named MySQLdb 。
這是由於django默認你導入的驅動是MySQLdb,但是MySQLdb 不支持python3.4以上版本,因此咱們須要的驅動是PyMySQL 因此,咱們只須要找到項目名文件下的__init__,執行替換命令
import pymysql pymysql.install_as_MySQLdb()
cmd終端建立數據庫,並在pycharm下建立類
3 models文件中建立一個類 # class UserInfo(models.Model): # id = models.AutoField(primary_key=True) # name = models.CharField(max_length=10) # bday = models.DateField() # checked = models.BooleanField()
最後經過兩條數據庫遷移命令便可在指定的數據庫中建立表 :
python manage.py makemigrations #生成記錄,每次修改了models裏面的內容或者添加了新的app,新的app裏面寫了models裏面的內容,相似於logging python manage.py migrate #執行上面這個語句的記錄來建立表,生成的表名字前面會自帶應用的名字,例如:你的book表在mysql裏面叫作app01_book表
數據庫查看建立的表show tables; desc app02_a; (app名 下劃線 類名)
pycharm查看數據庫
![
![
經過界面實現增刪改查,每次操做後上傳
經過代碼實現增刪改查
#設置主鍵相同時,新增數據覆蓋原有的數據