ORM:關係對象映射。定義一個類自動生成數據庫的表結構。
ORM分爲兩種:
DB First 數據庫裏先創建數據庫表結構,根據表結構生成類,根據類操作數據庫
Code First 先寫代碼,執行代碼創建數據庫表結構
主流的orm都是code first。django 的orm也是code first,所以學的時候,本質就分爲兩塊:
根據類自動創建數據庫表
根據類對數據庫表中的數據進行各種操作
一、Django連接MySQL
1、使用orm之前必須先創建數據庫
create database cmdb_kk2 default charset utf8;
2、修改project中的settings.py文件中設置 連接 MySQL數據庫(Django默認使用的是sqllite數據庫)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'cmdb_kk2',
'HOST': '192.168.1.48',
'PORT': 3306,
'USER': 'root',
'PASSWORD': '123456',
'CHARSET': 'utf8',
'OPTIONS': {
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"
}
}
}
python manage.py makemigrations #根據app下的migrations目錄中的記錄,檢測當前model層代碼是否發生變化?如果新增或者修改一個字段就會有變化
python manage.py sqlmigrate user 0001 #查看生成的sql
python manage.py migrate #針對所有的app 把orm代碼轉換成sql語句去數據庫執行
python manage.py migrate user #只對user 這個app_name 更新sql到數據庫
執行:python manage.py migrate 後默認表名:appname_classname。user_user
連接操作使用:
python manage.py shell
>> from django.db import models
>> from user.models import User
>> User.objects.all()
<QuerySet [<User: User object (1)>]>
增加:
>> from datetime import datetime
>> datetime.now():當前時間
>> User.objects.create(name="kk2",password="123",create_time=datetime.now())
<User: User object (4)>
刪除(id=4):
>> User.objects.filter(id=4).delete()
(1, {'user.User': 1})
.>>> User.objects.all().delete() #刪除所有的
更新,密碼都改爲8888
>> User.objects.all().update(password=8888)
3>> User..objects.filter(id=3).update(password=888888)
#實例化對象,新增數據
>> user=User()
>> user
<User: User object (None)>
>> user.name='kk'
>> user.name='python'
>> user.age='123'
>> user.passwod='123'
>> user.create_time=datetime.now()
>> user.tel='123'
>> user.save() #save後就會保存到數據庫中