Django MySql数据库 增删改查

添加数据(两种方式):

# 第一种方式
herozhu = HeroInfo.objects.create(
	hname = "某某某",
	hgender = 0,
	hdesc = 'houhouhou'
)
# 第二种方式
text = HeroInfo.objects.create(hname="某某某",hgender = 0,hdesc = 'houhouhou')

删除数据:

text = HeroInfo.objects.get(id = x)
text.delete()

修改数据(两种方式):

# 第一种方式
text = HeroInfo.objects.get(hname='某某某')
text.hname = '某某某呀'
text.save()
# 第二种方式
HeroInfo.objects.filter(hname='某某某').update(hname='某某某呀')

查询数据(基础):

基本查询

get 查询

# 查询id为1的数据
BookInfo.objecte.get(id=1)

all 查询

# 查询该表中所有数据
BookInfo.objecte.all()

count 查询

# 查询表中数据的总数量
BookInfo.objecte.count()

过滤查询

filter过滤 (filter和get的区别在get只能返回一个结果且在查询不到数据时会报错,而filter返回的是一个集合,可以同时返回多个数据,若搜索不到数据只会返回一个空集合而不会报错)

# 过滤id为1的数据
BookInfo.objecte.filter(id=1)

exclude过滤

# 查询除了id为1、3、5的数据
BookInfo.objecte.exclude(id= [1,3,5])

F和Q对象(导包:from django.models.db import F, Q)

F对象:对于属性与属性的对比

#查询readcount属性大于等于commentcount属性的书
BookInfo.objects.filter(readcount__gt=F('commentcount'))

Q对象:多个过滤器逐个调用表示逻辑与关系,同sql语句中where部分的and关键字

# Q对象可以使用&、| 连接    &表示逻辑与    |表示逻辑或    ~表示not

# 查询阅读量大于20的图书,只能用Q对象实现
BookInfo.objects.filter(  Q(bread__gt=20) & Q(id__lt=3)   )
# 但这种情况很少出现,多用以下方法
BookInfo.objects.filter(bread__gt=20,id__lt=3)

# 查询阅读量大于20,或编号小于3的Book,只能使用Q对象实现
BookInfo.objects.filter(Q(readcount__gt=20)|Q(id__lt=3))

# 查询id不等于3的数据
BookInfo.objects.filter(~Q(id=3))
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现连接虚拟机中的Django+MySQL并进行增删改查,需要以下步骤: 1. 确保虚拟机中DjangoMySQL已经正确安装并启动。 2. 在Django中创建一个可以进行数据库操作的应用程序,在应用程序中创建模型类,定义好需要操作的字段。 3. 在MySQL中创建相应的数据库和表,与Django中定义的模型类对应。 4. 在Django中配置数据库连接,可以在settings.py中进行配置。 5. 在Django中编写视图函数,实现增删改查功能。 6. 在app中编写前端界面,通过ajax等方式调用Django中的视图函数进行数据操作。 具体实现过程可以参考以下步骤: 1. 在虚拟机中启动Django,并创建一个应用程序,例如命名为myapp。 2. 在myapp中创建一个模型类,代码如下: ```python from django.db import models class User(models.Model): name = models.CharField(max_length=20) age = models.IntegerField() ``` 3. 在MySQL中创建一个名为mydb的数据库,并在其中创建一个名为user的表,代码如下: ```mysql CREATE DATABASE mydb; USE mydb; CREATE TABLE user ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(20) NOT NULL, age INT NOT NULL, PRIMARY KEY (id) ); ``` 4. 在Django的settings.py中配置MySQL连接,代码如下: ```python DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'mydb', 'USER': 'username', 'PASSWORD': 'password', 'HOST': 'localhost', 'PORT': '3306', } } ``` 其中,username和password需要替换为MySQL中的用户名和密码。 5. 在myapp中编写视图函数,可以实现增删改查功能,代码如下: ```python from django.shortcuts import render, HttpResponse from .models import User def add_user(request): if request.method == 'POST': name = request.POST.get('name') age = request.POST.get('age') user = User(name=name, age=age) user.save() return HttpResponse('success') def delete_user(request, id): user = User.objects.get(id=id) user.delete() return HttpResponse('success') def update_user(request, id): if request.method == 'POST': name = request.POST.get('name') age = request.POST.get('age') user = User.objects.get(id=id) user.name = name user.age = age user.save() return HttpResponse('success') def get_user(request, id): user = User.objects.get(id=id) return HttpResponse(f'name: {user.name}, age: {user.age}') ``` 其中,add_user函数为添加用户,delete_user函数为删除用户,update_user函数为更新用户信息,get_user函数为获取用户信息。 6. 在app中编写前端界面,通过ajax等方式调用Django中的视图函数进行数据操作。 例如,添加用户的前端界面可以编写如下代码: ```html <form> <label for="name">name:</label> <input type="text" id="name" name="name"><br><br> <label for="age">age:</label> <input type="text" id="age" name="age"><br><br> <input type="submit" value="Submit" onclick="addUser()"> </form> <script> function addUser() { var name = document.getElementById("name").value; var age = document.getElementById("age").value; var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if (xhr.readyState == XMLHttpRequest.DONE) { if (xhr.status == 200) { alert('success'); } else { alert('error'); } } } xhr.open('POST', '/add_user/', true); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.send("name=" + name + "&age=" + age); } </script> ``` 其中,addUser函数通过ajax调用Django中的add_user视图函数,将输入的name和age值传递给Django进行添加操作。 其他操作的前端界面类似,只需要调用不同的视图函数即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值