Django学习笔记(三)——ORM框架

目录

一、什么是ORM框架?

二、Django连接数据库

1、导入pymysql库

2、配置DATABASES

3、引入模块和进行配置

 4、创建数据表的结构

5、执行数据库迁移 

6、数据的增删改查 

(1)增加数据

(2)删除数据

(3)查询数据

 (4)修改数据


一、什么是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)
]

  • 53
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值