目录
一、什么是ORM框架?
ORM(Object Relational Mapping),即对象关系映射,将类和数据表对应起来,只需要通过类和对象就可以对数据表进行操作;
- 可以通过ORM创建、修改、删除数据库中的表【无法创建数据库】
- 可以操作表中的数据
二、Django连接数据库
1、导入pymysql库
2、配置DATABASES
在settings文件中配置DATABASES
3、引入模块和进行配置
在与settings.py同级目录下的__init__.py文件中引入模块和进行配置,代码如下
- 告诉Django使用pymysql模块连接mysql数据库,设置Django默认连接Mysql的方式
import pymysql
pymysql.install_as_MySQLdb()
4、创建数据表的结构
在models.py文件中创建数据表的结构,代码如下:
- 创建一个UserInfo类继承自models.Model,类中定义了要创建的表结构
- 这段代码将在我们前面连接的数据库中创建djangoapp01_userinfo的数据表,表中定义name为varchar类型,password为varchar类型,age为int类型,并自动在里面增加id字段、自增、关键字;
- 此时数据表还未创建,要成功创建表还需完成下一步
#models.py
from django.db import models
class UserInfo(models.Model):
name = models.CharField(max_length=32)
password = models.CharField(max_length=64)
age = models.IntegerField()
"""
create table djangoapp01_userinfo(
id auto_increment primary key,
name varchar(32),
password varchar(64),
age int
)
"""
5、执行数据库迁移
在terminal下执行数据库迁移,执行命令如下
注:需要完成app的注册
python manage.py makemigrations
python manage.py migrate
#表结构每次修改后需要再次执行这两行命令
PS:修改已有的表的结构,需要进行选择,
- 1:表示输入一个值作为新修改的字段的默认值
- 2:表示退出,需修改代码,增加默认值;
- 修改代码为其设置默认值为:size = models.IntegerField(default=2)
- 或者设置默认为空:data = models.IntegerField(null=True,blank=True)
6、数据的增删改查
(1)增加数据
将models.py中建的表结构的类导入到views.py文件,再依次增加数据
#views.py
from DjangoApp01.models import UserInfo
def index(request):
UserInfo.objects.create(name="Mary", password="0000",age=12)
UserInfo.objects.create(name="Sara", password="1111", age=13)
UserInfo.objects.create(name="Ben", password="2222", age=16)
return HttpResponse("增加数据成功!")
#urls.py
from django.urls import path
from DjangoApp01 import views
urlpatterns = [
path('inter/', views.inter),
]
(2)删除数据
#views.py文件
def delete(request):
UserInfo.objects.filter(id=3).delete() # 删除UserInfo表中id为3的数据
#UserInfo.objects.all().delete() #删除UserInfo表中的所有数据
return HttpResponse("删除数据成功!")
#urls.py文件
urlpatterns = [
path('delete/', views.delete)
]
(3)查询数据
# views.py
def search(request):
# UserInfo.objects.all() #获取表中所有数据
user1 = UserInfo.objects.filter(password="0000").first()
User1 = user1.name+"的密码是:"+user1.password
return HttpResponse(User1)
#urls.py
urlpatterns = [
path('search/', views.search)
]
(4)修改数据
#views.py
def update(request,name):
UserInfo.objects.filter(name=name).update(age=999)
return HttpResponse("修改数据成功!")
#urls.py
urlpatterns = [
path('update/<name>',views.update)
]