Django
小技巧
int(random.uniform(0, 9) * 10000000000)
#0-9组成的11位随机数都是唯一的,不会重复
1.Django中的mysql配置
步骤
1.创建模型
2.修改settings里的数据库信息
3.创建student models
4.迁移数据库
5.在view里写增删改查
0.基本事项
django-admin startapp Student #创建模型
记得把创建好的模型添加到setting里,注意区分大小写。
#更改settings里的数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',# 数据库引擎
'NAME': 'student',# 数据库名称
'USER': 'root',
'PASSWORD': '233mall156',
'HOST': '127.0.0.1',# 数据库地址,本机 ip 地址 127.0.0.1
'PORT': '3306',# 端口
}
}
1.1安装pymysql
pip3 install pymysql #这一步之前有下载过的就不用了
在最开始的项目包下的__init__.py中进行如下配置
setting中的配置默认为sqlite3数据库 当需要修改成MySql时
并且在setting.py的同级目录的__init__.py 加入如下配置
否则会报错: Error loading MySQLdb module.
import pymysql
pymysql.install_as_MySQLdb()
1.2 创建Student
先创建一个student的数据库
在app文件的models.py文件中创建Student(学生信息)
models.py:数据模块,用于数据库设计
from django.db import models
"""
创建学生信息表模型
"""
# Create your models here.
"""
该类是用来生成数据库的 必须要继承models.Model
"""
class Student(models.Model):
# 学号 primary_key=True: 该字段为主键
id = models.CharField(primary_key=True, max_length=15)
# 姓名 字符串 最大长度20 null=False, 表示该字段不能为空
name = models.CharField(max_length=20, null=False)
# 性别 布尔类型 默认True: 男生 False:女生
sex = models.BooleanField('性别', default=True)
# 身份证 unique=True 该字段唯一
idCard = models.CharField(max_length=18, null=False, unique=True)
specialized = models.CharField(max_length=24)
academy = models.CharField(max_length=64)
# 指定表名 不指定默认APP名字——类名(app_demo_Student)
class Meta:
db_table = 'student'
在利用models.py文件生成数据库表之前,我们需要手动的先创建数据库
1.3迁移数据库
创建完django_msql库之后,我们在终端执行如下命令,他的作用是将models文件生成一个迁移文件
python manage.py makemigrations
这是成功的样子,只要有0001就是成功的。没有0002也是成功的
将迁移文件的内容作用到数据库中,生成表或者修改字段属性
python manage.py migrate
这样表示成功。
1.4增删改查
把下面这串代码放入views里,
注意,代码里的Student是models里的Student
如果这里的类名不是Student,那下面的代码也要对应的修改。
from random import random
from django.http import HttpResponse
import random
# Create your views here.
from Student.models import Student
def insert(request):
# 随机整数 作为学号
for i in range(0, 5):
studentNum = int(random.uniform(0, 1) * 10000000000)
# 从models文件中获取student对象
student = Student()
# 给对象赋值
student.id = studentNum
student.name = 'tom' + str(i)
student.idCard = int(random.uniform(0, 9) * 10000000000)
student.sex = random.choice([True, False])
student.specialized = '软件工程'
student.academy='信息学院'
# 插入数据
student.save()
return HttpResponse('数据插入完毕')
"""
查询
"""
def find(request):
#sql = 'select * from student'
# django 也可以执行原生的sql语句
#result = Student.objects.raw(sql)
# 查询name = tom1的数据
result = Student.objects.filter(name='tom1')
"""
result为<class 'django.db.models.query.QuerySet'>的对象
需要进行数据处理
"""
arr = []
for i in result:
content = {'学号': i.id, '姓名': i.name, '性别': i.sex}
arr.append(content)
print(arr)
print(type(arr))
return HttpResponse(arr)
"""
修改
"""
def modify(request, id):
# 通过学号获取student对象
student = Student.objects.get(id=id)
# 设置student的name为jack
student.name = 'jack'
student.save()
return HttpResponse('修改成功.')
"""
删除
"""
def delete(request, id):
student = Student.objects.get(id=id)
student.delete()
return HttpResponse('删除成功.')
1.5修改url
url(r'^insert/', views.insert), # http://localhost:8000/insert/
url(r'^find/', views.find), # http://localhost:8000/find/
# http://localhost:8000/modify/学号
url(r'^modify/(?P<id>\d+)', views.modify),
# http://localhost:8000/delete/学号
url(r'^delete/(?P<id>.+)', views.delete),
报错
1·No migrations to apply.
解决办法
[(22条消息) Django 连接数据库创建表时未创建成功,提示No migrations to apply原因出现和解决_土渣渣的博客-CSDN博客_django没有migrations]
2·运行结果如下图
解决办法
添加一句“ runserver ”
参考
https://blog.csdn.net/weixin_43499626/article/details/84351572