目录
8连接MySQL数据库
8.1安装第三方模块
8.2ORM-创建数据库
(1)自行创建数据库:启动mysql服务
(2)创建一个数据库
(3)查看你新建的数据库
(4)django 连接数据库
(5)django创建修改删除表
案例:用户管理
1.用户列表
1.url
2.viwes
3.info_list.html
2.添加用户
1.url
2.viwes
3.info_add.html
3.删除用户
1.url
2.viwes
pip install mysqlclient
ORM
能帮我们做两件事:
打开cmd,输入mysql -u root -p 输入密码查看是否可以运行成功
create database 数据库名字 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
show databases;
在settings.py文件中进行配置和修改
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'day3', # 数据库名字
'USER': 'root',#账户名
'PASSWORD': '123456',#账户密码
'HOST': '127.0.0.1', # 那台机器安装了MySQL
'PORT': 3306,
}
}
在models.py文件中
from django.db import models class UserInfo(models.Model): name = models.CharField(max_length=32) password = models.CharField(max_length=64) age = models.IntegerField(default=2) class Department(models.Model): title = models.CharField(max_length=16)
执行命令
python manage.py makemigrations
python manage.py migrate
如果要对表结构进行调整在models.py文件中直接修改即可
在表中新曾列的时,由于表中列可能已有数据,所以新增列必须要指定新增列对应的数据,
1.手动输入值
age = models.IntegerField(default=2)
2.设置可以为空
data = models.IntegerField(null=True, blank=True)
orm
def orm(request): # 测试ORM操作表中的数据 2011-11-11 datetime.datetime.now() # #### 1.新建 #### # Department.objects.create(title="销售部") # Department.objects.create(title="IT部") # Department.objects.create(title="运营部") # UserInfo.objects.create(name="小明", password="123", age=19) # UserInfo.objects.create(name="小李", password="666", age=29) # UserInfo.objects.create(name="小红", password="666") # #### 2.删除 #### # UserInfo.objects.filter(id=1).delete() # UserInfo.objects.filter(id=2).delete() # UserInfo.objects.filter(id=3).delete() # Department.objects.all().delete() # #### 3.获取数据 #### # 3.1 获取符合条件的所有数据 # data_list = [对象,对象,对象] QuerySet类型 # data_list = UserInfo.objects.all() # for obj in data_list: # print(obj.id, obj.name, obj.password, obj.age) # data_list = [对象,] # data_list = UserInfo.objects.filter(id=1) # print(data_list) # 3.1 获取第一条数据【对象】 # row_obj = UserInfo.objects.filter(id=1).first() # print(row_obj.id, row_obj.name, row_obj.password, row_obj.age) # #### 4.更新数据 #### # UserInfo.objects.all().update(password=999) # UserInfo.objects.filter(id=2).update(age=999) # UserInfo.objects.filter(name="小李").update(age=999) return HttpResponse("成功")
path('info/list/', views.info_list),
def info_list(request): # 1.获取数据库中所有的用户信息 # [对象,对象,对象] data_list = UserInfo.objects.all() # 2.渲染,返回给用户 return render(request, "info_list.html", {"data_list": data_list})
Title INFO列表
添加
ID | 姓名 | 密码 | 年龄 | 操作 |
---|---|---|---|---|
{{ obj.id }} | {{ obj.name }} | {{ obj.password }} | {{ obj.age }} | 删除 |
path('info/add/', views.info_add),
def info_add(request): if request.method == "GET": return render(request, 'info_add.html') # 获取用户提交的数据 user = request.POST.get("user") pwd = request.POST.get("pwd") age = request.POST.get("age") # 添加到数据库 UserInfo.objects.create(name=user, password=pwd, age=age) # 自动跳转 return redirect("/info/list/")
Title 添加用户
path('info/delete/', views.info_delete),
def info_delete(request): nid = request.GET.get('nid') UserInfo.objects.filter(id=nid).delete() return redirect("/info/list/")