数据库的链接
在settings.py中配置DATABASES
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 数据库引擎
'NAME': 'mydb', #数据库名称
'USER': 'admin', # 链接数据库的用户名
'PASSWORD': 'aaaaaa', # 链接数据库的密码
'HOST': '127.0.0.1', # mysql服务器的域名和ip地址
'PORT': '3306', # mysql的一个端口号,默认是3306
}
}
创建一个管理员用户taka账号,密码为 taka:
CREATE USER 'taka'@'%'IDENTIFIED BY 'taka';
给这个用户授予所有远程访问,这个用户主要用于管理整个数据库,备份,还原等操作。
GRANT ALL ON *.* TO 'taka'@'%';
使授权立即生效:
FLUSH PRIVILEGES;
在主目录下的的__init__.py文件添加下面两行:
import pymysql
pymysql.install_as_MySQLdb()
映射
在app下面的models.py中创建django的模型类.
from django.db import models
class student(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=30)
age = models.IntegerField()
sex = models.BooleanField(default=True)
在manage.py文件同级文件夹下,首先执行以下命令,要创建映射文件
python manage.py makemigrations
执行以下命令,将映射文件中的映射数据提交到数据库中
python manage.py migrate
在pycharm中选择Tool>Run manage.py Task…,可直接输入
makemigrations
和migrate
生成映射时,Django自动生成数据库表结构,生成的映射一定不能更改
基本的增删改查
增:
from django.http import HttpResponse
from .models import student
def add(request):
# 第一种
ad = student.objects.create(name="一",age=1)
student.objects.get_or_create(name="二", age=2) # 此方法不添加重复数据,其他方法可添加重复数据
# 第二种
ad = student()
ad.name = "二"
ad.age = 2
ad.sex = False
ad.save() # 注意保持
# 第三种
ad = student(name="三",age=3)
ad.save() # 注意保持
return HttpResponse("完成")
查
def search(request):
se = student.objects.all() # 查所有,可用正向索引取出值
se = student.objects.get(age=2) # 查一个,发现多个则报错
se = student.objects.filter(age=3) # 查询所有符合条件的数据,可用正向索引取出值
return HttpResponse("完成")
改
def change(request):
# 第一种,先查找,再修改属性,只能修改单条数据
up = student.objects.get(id=5)
up.name="五"
up.save()
# 第二种,update可修改满足条件的所有数据
up = student.objects.filter(name="三")
up.update(age=6)
student.objects.all().update(sex=False)
return HttpResponse("完成")
删
def remove(request):
# 对查找到的数据直接delete()
student.objects.filter(age=6).delete()
student.objects.get(age=2).delete()
student.objects.all().delete()
return HttpResponse("完成")