数据库配置
验证已安装mysql,登录,root账号,无密码
mysql -u root
配置setting.py,找到DATABASES配置项,修改为
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test',
'USER': 'root',
'PASSWORD': '',
'HOST':'localhost',
'PORT':'3306',
}
}
登录mysql,创建test数据库
create database test;
创建app
在HelloWorld目录下(templates同级)创建appp
TestModel是app名,可以改
django-admin startapp TestModel
修改TestModel/models.py
如下类名代表了数据库表名,且继承了models.Model
类里面的字段代表数据表中的字段(name),数据类型有CharField(相当于varchar)、DateFiled(相当于datetime),max_length(限定长度)
#models.py
from django.db import models
class Test(models.Model):
name = models.CharField(max_length=20)
修改setting.py
找到INSTALLED_APPS这一项,在里面增加一行 'TestModel',
image.png
初始化表结果
创建表结构
python manage.py migrate #创建表结构
python manage.py makemigrations TestModel #让Django知道我们在我们的模型有一些变更
python manage.py migrate TestModel #创建表结构
结果如下:
image.png
数据库操作
在HelloWorld/HelloWorld目录下创建testdb.py文件;
修改urls.py文件
如果有中文,别忘了文件改为utf-8编码。
urls.py文件修改:
from django.conf.urls import * #修改了此行
from django.contrib import admin
from django.http import HttpResponse
from . import view,testdb #修改了此行
urlpatterns = [
url(r'^$',view.hello),
url(r'^testdb$',testdb.testdb), #新增此行
]
testdb.py内容:
# -*- coding: utf-8 -*-
from django.http import HttpResponse
from TestModel.models import Test
# 数据库操作
def testdb(request):
test1 = Test(name='runoob')
test1.save()
return HttpResponse("<p>数据添加成功!</p>")
访问http://127.0.0.1:8000/testdb 就可以看到数据添加成功的提示
image.png查询数据库
use test;
select * from testmodel_test;
结果如下:
image.png
获取数据
注释掉上面添加数据的代码
#-*- coding:utf-8 -*-
from django.http import HttpResponse
from TestModel.models import Test
#数据库操作
'''
#新增数据
def testdb(request):
test1 = Test(name = 'runoob')
test1.save()
return HttpResponse("<p>数据添加成功!</p>")
'''
#获取数据
def testdb(request):
#初始化
response = ""
response1 = ""
#通过objects这个模型管理器的all()获得所有数据行,相当于sql中的select * from
list = Test.objects.all()
#filter相当于sql中的where,可以设置条件过滤结果
response2 = Test.objects.filter(id=1)
#获取耽搁对象
response3 = Test.objects.get(id=1)
#限制返回的数据 相当于sql中的 limit
Test.objects.order_by('name')[0:2]
#数据排序
Test.objects.order_by("id")
#上面的方法可以连锁使用
Test.objects.filter(name='runoob').order_by("id")
#输出所有数据
for var in list:
response1 += var.name + " "
response = response1
return HttpResponse("<p>" + response + "</p>")
更新数据
#-*- coding:utf-8 -*-
from django.http import HttpResponse
from TestModel.models import Test
#数据库操作
'''
#新增数据
def testdb(request):
test1 = Test(name = 'runoob')
test1.save()
return HttpResponse("<p>数据添加成功!</p>")
#获取数据
def testdb(request):
#初始化
response = ""
response1 = ""
#通过objects这个模型管理器的all()获得所有数据行,相当于sql中的select * from
list = Test.objects.all()
#filter相当于sql中的where,可以设置条件过滤结果
response2 = Test.objects.filter(id=1)
#获取耽搁对象
response3 = Test.objects.get(id=1)
#限制返回的数据 相当于sql中的 limit
Test.objects.order_by('name')[0:2]
#数据排序
Test.objects.order_by("id")
#上面的方法可以连锁使用
Test.objects.filter(name='runoob').order_by("id")
#输出所有数据
for var in list:
response1 += var.name + " "
response = response1
return HttpResponse("<p>" + response + "</p>")
'''
###更新数据
def testdb(request):
#修改其中一个id=1的name字段,在save,相当于sql中的update
test1 = Test.objects.get(id=1)
test1.name = 'Google'
test1.save()
#修改的另一种方式
#Test.objects.filter(id=1).update(name='Google')
#修改所有列
#Test.objects.all().update(name='Google')
return HttpResponse("<p>修改成功</p>")
删除数据
如果数据库没有,会报错
#-*- coding:utf-8 -*-
from django.http import HttpResponse
from TestModel.models import Test
#数据库操作
'''
#新增数据
def testdb(request):
test1 = Test(name = 'runoob')
test1.save()
return HttpResponse("<p>数据添加成功!</p>")
#获取数据
def testdb(request):
#初始化
response = ""
response1 = ""
#通过objects这个模型管理器的all()获得所有数据行,相当于sql中的select * from
list = Test.objects.all()
#filter相当于sql中的where,可以设置条件过滤结果
response2 = Test.objects.filter(id=1)
#获取耽搁对象
response3 = Test.objects.get(id=1)
#限制返回的数据 相当于sql中的 limit
Test.objects.order_by('name')[0:2]
#数据排序
Test.objects.order_by("id")
#上面的方法可以连锁使用
Test.objects.filter(name='runoob').order_by("id")
#输出所有数据
for var in list:
response1 += var.name + " "
response = response1
return HttpResponse("<p>" + response + "</p>")
#更新数据
def testdb(request):
#修改其中一个id=1的name字段,在save,相当于sql中的update
test1 = Test.objects.get(id=1)
test1.name = 'Google'
test1.save()
#修改的另一种方式
#Test.objects.filter(id=1).update(name='Google')
#修改所有列
#Test.objects.all().update(name='Google')
return HttpResponse("<p>修改成功</p>")
'''
#删除数据
def testdb(request):
#删除id=1的数据
test1 = Test.objects.get(id =1)
test1.delete()
#另一种方式
#Test.objects.filter(id=1).delete()
#删除所有
#Test.objects.all().delete()
return HttpResponse("<p>删除成功</p>")
网友评论