前言

django的models模块里面可以新增一张表和字段,通常页面上的数据操作都来源于数据库的增删改查,django如何对msyql数据库增删改查操作呢?

本篇详细讲解django操作mysql数据库

新增数据

接着前面数据库User表创建成功后,如果我们在页面上注册用户的话,就需要在User表新增一条数据

比如,我们想在User表插入一组数据 user_name=yoyo5, psw=555555

在urls.py同一目录(helloworld/helloworld/testdb.py)新建一个testdb.py脚本

# helloworld/helloworld/testdb.py

from django.http import HttpResponse
from hello.models import User # 新增数据
def add_user(request):
test1 = User(user_name='yoyo5',
psw="55555")
test1.save()
return HttpResponse("yoyo5用户创建成功!看去看看吧")

urls.py新增url访问地址

from django.conf.urls import url
from django.urls import re_path, path
from hello import views
from . import testdb urlpatterns = [
# 新增用户
url(r'^register$', testdb.add_user), ]

浏览器输入http://localhost:8000/register,就会看到页面显示:yoyo5用户创建成功!看去看看吧

查询数据库,会发现hello_user表新增了一个yoyo5的数据

更新数据

如果需要修改数据库的某个数据,比如我想把yoyo5用户的psw改成999999

在urls.py同一目录(helloworld/helloworld/testdb.py)的testdb.py脚本,继续写个update_psw函数

# helloworld/helloworld/testdb.py

from django.http import HttpResponse
from hello.models import User # 更新数据
def update_psw(request):
# 修改其中一个user_name='yoyo5'的字段,再save,相当于SQL中的UPDATE
test2 = User.objects.get(user_name='yoyo5')
test2.psw = '999999'
test2.save() # 另外一种方式
# Test.objects.filter(id=1).update(name='Google') # 修改所有的列
# Test.objects.all().update(name='Google')
return HttpResponse("<p>密码修改成功</p>")

urls.py新增url访问地址

from django.conf.urls import url
from django.urls import re_path, path
from . import testdb urlpatterns = [
# 新增用户
url(r'^register$', testdb.add_user),
url(r'^update$', testdb.update_psw), ]

浏览器输入http://localhost:8000/update,就会看到页面显示:密码修改成功

查询数据库,会发现hello_user表yoyo5的psw对应的值修改了

删除数据

如果user表里面的某个用户数据不想要了,也可以删除数据

# 删除数据
def delete_user(request):
# 删除user_name=yoyo1的数据
test3 = User.objects.get(user_name='yoyo1')
test3.delete() # 另外一种方式
# Test.objects.filter(id=1).delete() # 删除所有数据
# Test.objects.all().delete() return HttpResponse("<p>删除成功</p>")

urls.py新增url访问地址

from django.conf.urls import url
from django.urls import re_path, path
from . import testdb urlpatterns = [
# 新增用户
url(r'^register$', testdb.add_user),
url(r'^update$', testdb.update_psw),
url(r'^delete$', testdb.delete_user),
]

浏览器输入http://localhost:8000/delete,就会看到页面显示:删除成功

查询数据库,会发现hello_user表yoyo1对应的数据清除了

备注:要是表里面没这个数据,会报错:User matching query does not exist.

查询数据

比如我要查询user表里面yoyo用户对应的mail的值

在urls.py同一目录(helloworld/helloworld/testdb.py)的testdb.py脚本,继续写个update_psw函数

# 查询数据
def select_mail(request): # 方法1 可以查询单个结果直接获取mail值
m = User.objects.get(user_name='yoyo').mail # 方法2 filter相当于SQL中的WHERE,可设置条件过滤结果
# test4 = User.objects.filter(user_name='yoyo') # 查询结果是list,取下标后,获取mail字段的值
# m = test4[0].mail return HttpResponse("<p>查询结果:%s</p>" % m)

urls.py新增url访问地址

from django.conf.urls import url
from django.urls import re_path, path
from . import testdb urlpatterns = [
# 新增用户
url(r'^register$', testdb.add_user),
url(r'^update$', testdb.update_psw),
url(r'^delete$', testdb.delete_user),
url(r'^mail$', testdb.select_mail),
]

浏览器输入http://localhost:8000/mail,就会看到页面显示:查询结果:283340479@qq.com

关于查询

  • 通过objects这个模型管理器的all()获得所有数据行,相当于SQL中的SELECT * FROM

    a = User.objects.all()

  • filter相当于SQL中的WHERE,可设置条件过滤结果

    b = User.objects.filter(id=1)

  • 获取单个对象

    c = User.objects.get(id=1)

  • 限制返回的数据 相当于 SQL 中的 OFFSET 0 LIMIT 2;

    d = User.objects.order_by('name')[0:2]

  • 查询结果排序

    e = User.objects.order_by("id")

  • 上面的方法可以连着使用

    f = User.objects.filter(name="runoob").order_by("id")

django交流QQ群:779429633

python测试开发django-13.操作数据库(增删改查)的更多相关文章

  1. 2. MongoDB基本操作 —— 用Mongo.exe操作数据库增删改查

    一.开篇 传统的关系数据库一般由数据库(database).表(table).记录(record)三个层次概念组成,MongoDB是由数据库(database).集合(collection).文档对象 ...

  2. NX二次开发-NX访问SqlServer数据库(增删改查)C#版

    版本:NX9+VS2012+SqlServer2008r2 以前我写过一个NX访问MySQL数据库(增删改查)的文章https://www.cnblogs.com/nxopen2018/p/12297 ...

  3. Django-Model操作数据库(增删改查、连表结构)

    一.数据库操作 1.创建model表         基本结构 1 2 3 4 5 6 from django.db import models     class userinfo(models.M ...

  4. Django基础之数据库增删改查

    Django中生成多个APP,每个APP下都有自己models模块,避免了多个APP之间数据的相互影响. 1.首先在APP的models下创建一个类 class UserInfo(models.Mod ...

  5. phpcms 操作数据库 增删改查

    数据库的其他类继承的都是libs/class/model.class.php 这里面有写好的操作数据库的常用方法 1.增 insert($data, $return_insert_id = false ...

  6. 使用django连接数据库 对数据库 增删改查

    如果路由访问的时候出现 就把项目中的注释掉 登录功能 1 路由访问如果不加斜杠 会内部自动重定向加斜杠的路由 所有的静态文件(css,js,前端第三方类库)默认都放在static文件下 #静态文件配置 ...

  7. MongoDB学习day04--NodeJs操作数据库增删改查

    一.在Nodejs中使用Mongodb Nodejs需要引入的包 npm install mongodb --save -dev 或者使用镜像 cnpm install mongodb --save ...

  8. java操作数据库增删改查的小工具1--TxQueryRunner

    在java程序中,一般使用jdbc连接数据库,比较麻烦,在看传智教程时学了一个工具类,用于简化与数据库之间的操作步骤,就是TxQueryRunner,他是QueryRunner的子类,用起来和他是一样 ...

  9. Django之ORM数据库增删改查

    总结:ORM的 查.增.删.改 - 查 - client - 有一个展示页面(xxx_show.html) - 这一个页面一输入执行后,get请求向server端发送 - 这个展示页面有添加按钮.删除 ...

  10. JavaWeb学习记录(七)——MVC操作数据库增删改查与分页功能

    一.分页工具类 package blank.util;import java.util.List; import org.springframework.jdbc.core.JdbcTemplate; ...

随机推荐

  1. 关于oracle分组排序取值的问题

    按照 某字段分组 某字段排序 然后取出该分组中排第1条数据(每组只取一条) SELECT* FROM( SELECT a.*,row_number() over(partition by ORI_FE ...

  2. printf 字符串格式

    摘自:http://www.cppblog.com/API/archive/2013/07/18/201923.html 首先 long long是C99标准新规定的.不少编译器还不支持,Micros ...

  3. 为什么因式分解n=pq分别得到pq是求解密钥中d的关键

    从d的来源来说,它是这样来的: "找到一个数d,使得ed-1能够被z整除.即给定e,选择数d,使得ed被z除的余数为1",即  ed=1 (mod z) 上面这句话中,为了求d,我 ...

  4. 【Java】 大话数据结构(13) 查找算法(4) (散列表(哈希表))

    本文根据<大话数据结构>一书,实现了Java版的一个简单的散列表(哈希表). 基本概念 对关键字key,将其值存放在f(key)的存储位置上.由此,在查找时不需比较,只需计算出f(key) ...

  5. Android导入依赖appcompat-v7报错

    Android导入依赖appcompat-v7报错   导入appcompat-v7时报错了 导入的是implementation 'com.android.support:appcompat-v7: ...

  6. HDU 6249 Alice’s Stamps

    [题目链接] 题目大意: 说有$m$个区间,要求选出不超过$k$个区间,使这些区间覆盖的长度最长,问最长长度是多少. 题解: 所有区间按$R$从小到大排序之后可以进行$dp$. $dp[i][j]$表 ...

  7. 使用<c:set>标签配置项目路径

    写在前面的话: 在java项目中,路径的配置是一项最基础也是最必不可少的工作,最初我们配置路径是根据<%=request.getContextPath()%>这个java代码块进行配置的, ...

  8. JAVA-Socket通信 打造属于自己的聊天室(服务端)

    我们每天都在使用着微信.QQ等聊天软件,但不知你是否有想过这些聊天软件是如何实现的?是否想过要制作一个属于自己的聊天室? 本篇博客将带你打造一个简单的属于自己的聊天室,将cmd作为聊天窗口,可通过内网 ...

  9. android 流行框架的使用

    === OKHttp主要功能 1.联网请求文本数据 2.大文件下载 3.大文件上传 4.请求图片 get请求 Request request = new Request.Builder()       ...

  10. 有向图强连通分量的Tarjan算法和Kosaraju算法

    [有向图强连通分量] 在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected).如果有向图G的每两个顶点都强连通,称G是一个强连通图.非强连通图有向图的极 ...