python+django:11、django操作mysql

本文介绍了如何使用Django操作MySQL数据库,包括定义模型、生成数据库表、自定义主键以及进行增删改查操作。在Django的models.py中定义表结构,通过管理命令同步数据库,并在testdb.py文件中实现具体的数据操作。
摘要由CSDN通过智能技术生成

定义模型

  1. cd 到Helloworld/Helloworld文件目录下,输入
    django-admin startapp NewModel
    于是生成了与Helloworld同级的NewModel文件夹,内有models.py文件可以生成表。

  2. 在settings.py文件下找到INSTALLED_APPS项,添加:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'NewModel',   #添加此项
]

生成表
Helloworld/NewModel/models.py

  • 类名代表了数据库表的名字

  • name,age是表中的字段

  • CharField相当于varchar;DateField相当于datetime;max_length参数限定长度

  • 此时,会默认新增字段id为主键

  • 如果需自己建立主键的,比如name是主键,代码改写成name = models.CharField(max_length=20,primary_key=True)

from django.db import models

class Person(models.Model):
	name = models.CharField(max_length=20)
	age = models.IntegerField()

在mysql中创建表结构

  1. cd 到Helloworld/Helloworld文件目录下,输入
    python manage.py makemigrations NewModel让django知道我们在模型上有变更
  2. python manage.py migrate创建表结构
  3. 此时打开navicat可以看到test下有表结构如下:表名为(应用名_类名)
    在这里插入图片描述

数据库操作

  • 在urls.py文件下添加urlpatterns路径,和以前一样
  • 在Helloworld/Helloworld文件目录下新建一个testdb.py的文件,内容如下:
from django.http import HttpResponse
from NewModel.models import Person

def testdbadd(request):
	person1 = Person(name="AB",age=100)
	person1.save()
	return HttpResponse("添加成功")
from django.http import HttpResponse
from NewModel.models import Person

def testdbdel(request):
	person1 = Person.objects.get(id=1)
	person1.delete()
	return HttpResponse("删除成功")
from django.http import HttpResponse
from NewModel.models import Person

def testdbdel(request):
	person1 = Person.objects.get(id=1)
	person1.name = "abc"
	person1.save()
	#or Person.objects.get(id=1).update(name="abc")
	return HttpResponse("修改成功")
from django.http import HttpResponse
from NewModel.models import Person

def testdbdel(request):
	person1 = Person.objects.get(id=1)
	#or person1 = Person.objects.filter(id=1)
	#or person1 = Person.objects.all()
	return HttpResponse("查询出用户名为:"+person1.name)

filter()相当于是where,可获得一组对象;get()得到的是单个对象,因此我觉得,get()的参数应该只能取主键,否则会报错

from django.http import HttpResponse
from NewModel.models import Person

def testdbdel(request):
	person1 = Person.objects.filter(id=1)
	return HttpResponse("查询出用户名为:"+person1[0].name)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值