一、Django的ORM简介
1. ORM系统
概念:对象关系映射(Object Relational Mapping,简称ORM)
优势:不用直接编写SQL代码,只需像操作对象一样从数据库操作数据。
2. django模型映射关系
① 模型类必须都写在app下的modles.py文件中
② 模型如果需要映射到数据库,所在的app必须被安装
③ 一个数据表对应一个模型类,表中的字段,对应模型中的类属性
二、数据库连接配置
1. 在setting.py中配置DATABASES
创建一个管理员用户moran账号,密码qwe123:
CREATE USER 'moran'@'%'IDENTIFIED BY 'qwe123';
给这个用户授予所有远程访问,这个用户主要用于管理整个数据库,备份,还原等操作。
GRANT ALL ON *.* TO 'moran'@'%';
使授权立即生效:
FLUSH PRIVILEGES;
2. pymysql数据库连接器的配置:
① 在虚拟环境中安装pymysql: pip install pymysql -i https://pypi.douban.com/simple
② 设置连接器为pymysql:
在主目录__init__.py文件添加以下两行代码:
# __init__.py文件
import pymysql pymysql.install_as_MySQLdb()
三、模型的创建与映射
1. 在app下面的models.py中创建django的模型类:
2. 将模型类映射到数据库:
① 首先执行以下命令,要创建映射文件
python manage.py makemigrations [app name]
注:命令后面可以跟app名称,表示指定对某个app的模型进行映射,没写所有的app都执行。
② 执行以下命令,将映射文件中的映射数据提交到数据库中
python manage.py migrate
注: 在执行以上命令前,要保证我们创建模型的app是已经注册过的app。
执行完以上命令后,在数据库中可以查询到创建的以app名_模型名的数据表,二其他的一些表格是django自动生成的。
注: 如果要删除表,那么可以去django模型中注释掉模型类,然后执行映射的命令,不要手动在命令行里面去删除。
四、数据的增删改查
1. 增加数据
在视图函数中导入User模型类,然后使用下面的方法添加数据
from .models import User def add_user(request): # 方法一 taka = User(name='taka', age=18) taka.save() # 方法二 xiaopo = User() xiaopo.name = 'xiaopo' xiaopo.age = 18 xiaopo.save() # 方法三 User.objects.create(name='xiaoming', age=20) # 方法四 User.objects.get_or_create(name='xiaohong', age=21) return HttpResponse('插入数据成功!')
2. 查找数据
在视图函数中导入User模型类,实现简单的查找
from .models import User def search_user(request): # 查询所有记录对象 rs = User.objects.all() # 查询一个记录对象 rs = User.objects.get(id=1) # 获取满足条件的对象 rs = User.objects.filter(name='xiaoming') print(rs) return HttpResponse('查询数据成功!')
注:数据库相关的接口(QuerySet API)
① 从数据库总查询出来的结果一般是一个集合,这个集合叫做QuerySet
② QuerySet是可迭代对象
③ QuerySet支持切片,不支持复索引
④ 可以用list强行将QuerySet变成列表
3. 修改数据
在视图函数中导入User模型类,然后使用下面的方法更新数据
from .models import User def update_user(request): # 先查询到再属性赋值修改 rs = User.objects.get(name='xiaoming') rs.name = 'Xiaoming' # 简单的变更首字母大小写 rs.save() # 使用update方法直接修改 User.objects.filter(name='Xiaoming').update(name='XM') User.objects.all().update(city="wuhan") return HttpResponse("更新数据成功!")
4. 删除数据
在视图函数中导入User模型类,然后使用下面的方法删除数据
from .modles import User def delete_user(request): User.objects.get(id=1).delete() User.objects.filter(age=18).delete() User.objects.all().delete() return HttpResponse("删除数据成功!")
标签:name,objects,模型,基础,映射,1105,User,app From: https://www.cnblogs.com/lxinghua/p/17419959.html