Django模型類似於java語言中的jpa一樣,減少創建數據的數據,簡化在開發中數據庫中的操作。
from django.db import models
from django.urls import reverse
# Create your models here.
class UserBaseInfo(models.Model):
id = models.AutoField(verbose_name='編號', primary_key=True)
username = models.CharField(verbose_name='用戶名稱', max_length=30)
password = models.CharField(verbose_name='密碼', max_length=20)
status = models.CharField(verbose_name='狀態', max_length=1)
createdate = models.DateTimeField(
verbose_name='創建日期', db_column='createDate')
def __str__(self):
return str(self.id)
class Meta:
verbose_name = '人員基本信息'
db_table = 'UserBaseInfo4'
屬性備注:
DecimalField:
設置模型的返回值
用於定義Django模型的行為
參數:
to 模型名稱
to_field 關聯的字段名稱
on_delete 刪除的配置
models.OneToOneField()
配置數據庫連接工具,默認是用的sqlite3,這裡修改為mysql,並配置了日志。
DATABASES = {
'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': BASE_DIR / 'db.sqlite3',
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test',
'USER': 'root',
'PASSWORD': 'root',
'HOST': 'localhost',
'POST': '3306',
# 取消外鍵約束
'OPTIONS': {
"init_command": "SET foreign_key_checks = 0;",
},
}
}
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
},
},
'loggers': {
'django.db.backends': {
'handlers': ['console'],
'propagate': True,
'level': 'DEBUG',
}
},
}
然後生成對應數據表
python manage.py makemigrations
python manage.py migrate
In [1]: from app3.models import *
In [2]: users = UserBaseInfos.objects.all()
In [3]: print(users[0].username)
(0.000) SELECT @@SQL_AUTO_IS_NULL; args=None
(0.000) SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; args=None
(0.000) SELECT `UserBaseInfo4`.`id`, `UserBaseInfo4`.`username`, `UserBaseInfo4`.`password`, `UserBaseInfo4`.`status`, `UserBaseInfo4`.`createDate` FROM `UserBaseInfo4` LIMIT 1; args=()
背景牆
users = UserBaseInfos.objects.get(id=1)
print(users.username)
values()
提取對應字段
distinct()
users = UserBaseInfos.objects.distinct().values(‘department’)
使用sava()保存更新數據,create()也可新增數據。
users = UserBaseInfos.objects.get(id=1)
users.username = "Django.js"
users.save()
delete()方法刪除數據
F函數可以更新字段,更新之後使用refresh_from_db()
user.salary = F(“salary”) + 1000
Q函數可以支持條件查詢
filter(Q(age__gt=30)&Q(salary__gt=5000))
使用django.db.models.Manager.raw()執行SQL,也可以執行帶參數的SQL語句,使用[]來傳入參數。
users = UserBaseInfos.objects.raw("select * from UserBaseInfo4")
print(users[0].username)
事務的ASID特性:原子性、一致性、隔離性和持久性
Django中事務主要有裝飾器方式和with語句。
@transaction.atomic
def trans(request):
save_id = transaction.savepoint()
try:
---
transaction.savepoint_commit(save_id)
except:
transaction.savepoint_rollback(save_id)
Classification algorithm :C4.5
When looking for inspiration f