一.Django 模型映射关系
模型类必须写在 app 下的 models.py 文件中,模型如果需要映射到数据库,所在的app必须被安装。 一个数据表对应一个模型类,表中的字段,对应模型中的类属性.
二.数据库的配置
我们需要在 django 的 setting.py 中配置 DATABASES
三.mysql 数据库连接器的配置
在虚拟环境中安装pymysql: pip install pymysql
设置连接器为pymysql:
在主目录下的的__init__.py文件添加下面两句
import pymysql
pymysql.install_as_MySQLdb()
四.使用 django 中的模型
在app下面的models.py中创建django的模型类
五.将模型类映射到数据库
1.首先执行以下命令,要创建映射文件
python manage.py makemigrations
2.执行以下命令,将映射文件中的映射数据提交到数据库中
python manage.py migrate
打开数据我们能看到创建的以app名_模型名的数据表,而其他的一些表格是django自动生成的.
注意:如果要删除表,那么可以去django模型中注释掉模型类,然后执行映射的命令,不要手动在命令行里面去删除
六.数据的增删改查
路由:
from django.urls import path
from . import views
urlpatterns = [
path('add/', views.add_user),
path('select/', views.select_user),
path('update/', views.update_user),
path('delete/', views.delete_user),
]
模型:
from django.db import models
# Create your models here.
class User(models.Model): # 模型类名 对应表名
id = models.AutoField(primary_key=True) # 主键约束 id 可以省略
name = models.CharField(max_length=30) # 字符类型
age = models.IntegerField() # 整数类型
city = models.CharField(default='shanxi', max_length=30) # 新增字段 必须要有默认值
def __str__(self): # 使用查询方法时,数据的展示方法
return f'User<id={self.id},name={self.name},age={self.age},city={self.city}>'
视图函数:
1.增
def add_user(request): # 增加
(1)
# 方法一 增加
dj = User(name='董椒', age=18)
dj.save() # 保存
return HttpResponse('数据加载成功')
(2)
# 方法二 增加
wufeng = User()
wufeng.name = '无风阳台'
wufeng.age = 19
wufeng.city = 'shanghai'
wufeng.save()
return HttpResponse('数据添加成功')
(3)
# 方法三 增加
User.objects.create(name='夜深', age=15, city='shandong')
return HttpResponse('数据添加成功')
(4)
# 方法四 增加
User.objects.get_or_create(name='上野', age=21)
return HttpResponse('数据添加成功')
2.删
def delete_user(request): # 删除
(1)
User.objects.get(id=6).delete()
return HttpResponse('数据删除完毕')
(2)
User.objects.filter(id=5).delete()
return HttpResponse('数据删除完毕')
3.改
def update_user(request): # 修改数据
(1)
# 方法一 先查询到数据 然后在进行数据修改
res = User.objects.get(id=3)
res.name = '董椒'
res.age = 18
res.city = 'xian'
res.save()
return HttpResponse('数据修改完毕')
(2)
# 方法二 直接查询修改
User.objects.filter(id=2).update(city='changsha')
return HttpResponse('数据修改完毕')
4.查
def select_user(request): # 查询
(1)查询所有数据
rs = User.objects.all()
for i in rs:
print(i)
return HttpResponse('数据查询成功')
(2)条件查询
rs = User.objects.get(id=1) # 一般主键字段
print(rs)
或
rs = User.objects.filter(age=18, name='墨染')
print(rs[0]) #支持索引取值
return HttpResponse('数据查询成功')
(3)查询第一条
rs = User.objects.first()
print(rs)
return HttpResponse('数据查询成功')
(4)排除条件进行查询
rs = User.objects.exclude(age=18)
(5)排序查询 - 代表反向排序
rs = User.objects.order_by('-age')
print(rs)
return HttpResponse('查询成功')
(6)范围查询
rs = User.objects.filter(age__gt=18)
rs = User.objects.filter(age__lt=18)
rs = User.objects.filter(age__in=[18, 25])
rs = User.objects.filter(age__range=(18, 25))
(7)转自典查询
rs = User.objects.all().values()
return HttpResponse('查询完毕')
或
rs = User.objects.filter(age=18).values()
return HttpResponse('查询完毕')
版权声明:本文为A15535286714原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。