数据库配置(mysql)
下面还是以上一篇为例(hellojango),之后python manage starapp two 创建一个新的app
实现student数据库的增删改查
1、配置”DATABASES”:
打开hellojango/setting.py。
找到DATABASES修改为如下代码:
DATABASES = {
'default': {
# 'ENGINE': 'django.db.backends.sqlite3', # 原本默认连接sqlite
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django', # 需要创建一个库
'USER': 'root',
'PASSWORD': 'toor',
'HOST': '192.168.11.15',
'PORT': '3306',
}
}
2、安装数据库引擎(pymysql)
修改hellojango/_init.py
import pymysql
pymysql.install_as_MySQLdb()
创建模型
在 Django 里写一个数据库驱动的 Web 应用的第一步是定义模型 - 也就是数据库结构设计和附加的其它元数据。
Django遵循DRY原则,所以我们只需要定义一下数据模型,其他都不用关系,下面创建一个Sudent模型:
from django.db import models
# Create your models here.
class Student(models.Model):
s_name = models.CharField(max_length=16)
s_age = models.IntegerField(default=1)
参数说明:
CharField 表示字符字段
IntegerField 表示int字段
除此之外还有:DateTimeField 表示日期时间字段,ImageField 表示图像字段等等。
激活模型
创建完成模型代码,之后需要激活模型,django会根据你的代码创建数据库表,比如上面会创建一个Student表,然后创建s_name、s_age两个字段
配置stting.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'two.apps.TwoConfig', #添加在这里
# 'two',
]
在终端中输入:
python manage.py migrate
python manage.py makemigrations
数据库操作具体实现
新增数据
urls.py
from two import views
urlpatterns = [
url(r'^addstudent/', views.add_student),
]
之后会提示没有add_student这个类,如果你是在pycharm中编写的话,可以用ALT+CTRL自动在 two/views.py自动创建这个类,完整代码如下:
def add_student(request):
student = Student() #实例化一个student对象
num = random.randint(0, 1000)
student.s_name = "yang {id}".format(id=num) # 添加s._name
student.s_age = num
student.save() # 保存
return HttpResponse("add success")
在此之后启动runserver,就可以访问localhost:8000/addstudent,看看数据库中有没有新增数据
查询数据
urls.py
from two import views
urlpatterns = [
url(r'^addstudent/', views.add_student),
url(r'^getstudent/', views.get_student),
]
同样的创建一个get_student类
def get_student(request):
students = Student.objects.all() #查询所有数据
for student in students:
print(student.s_name)
conntext = {
"students": students
}
# return HttpResponse("student list")
return render(request, "index.html", context=conntext)
由于我上面index.html,所以这里在two创建一个文件夹为templates用来存放index.html
index.html代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学生列表</title>
</head>
<body>
<ul>
{% for student in students %}
{{student.s_name}}
{% endfor %}
</ul>
</body>
</html>
修改数据&&删除数据
同样的在urls.py添加两条规则,以访问页面。
from two import views
urlpatterns = [
url(r'^addstudent/', views.add_student),
url(r'^getstudent/', views.get_student),
url(r'^upstudent/', views.up_student),
url(r'^destudent/',views.de_student),
]
增加和删除都需要先查询数据,所以要给定”键值”,django默认id为主键
views.py新增如下代码:
def up_student(request):
student = Student.objects.get(pk=3) #查询数据
student.s_name='zhangsan' # 重新给字段赋值
student.save() #保存
return HttpResponse("updata sucess")
def de_student(request):
student = Student.objects.get(pk=4) #查询数据
student.delete() #删除字段
return HttpResponse("delete sucess")
至此,Django中数据库的操作就到这来告一段落了,附上官方文档
声明:
- 笔者初衷用于分享与交流网络知识,若读者因此作出任何危害网络安全行为后果自负,与作者无关!