文章目录
- 1 orm连接Mysql
- 1.1 安装第三方模块
- 1.2 ORM
- 1.2.1、创建数据库
- 1.2.2、Django连接数据库
- 1.2.3、django操作表
- 1.2.4、创建和修改表结构
- 1.2.5、增删改查
- 1.2.5.1 增加数据
- 1.2.5.2 删除数据
- 1.2.5.3 获取数据
- 1.2.5.4 修改数据
1 orm连接Mysql
Django为了使操作数据库更加简单,提供了ORM框架。
1.1 安装第三方模块
pip install mysqlclient
安装成功
注意,如果安装报错,去官网下载mysqlclient.whl
包进行安装,下载地址https://pypi.org/project/mysqlclient/#files
,选择适合自己Python版本的包即可
1.2 ORM
ORM可以帮助我们做两件事:
-
创建、修改、删除数据库中的表
-
操作表中的数据(不用写sql语句)
-
select insert update
-
1.2.1、创建数据库
- 启动mysql服务
- 自带工具创建数据库
CREATE DATABASE django_learning DEFAULT CHARSET UTF8 COLLATE utf8_general_ci;
1.2.2、Django连接数据库
创建新的django项目mysite2
django-admin startproject mysite2
创建app
python manage.py startapp app01
找到mysite2/mysite2/settings.py
文件,添加DATABASE
配置文件
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django_learning',
'USER': 'root',
'PASSWORD': '3535',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
1.2.3、django操作表
- 创建表
- 删除表
- 修改表
在models.py
文件中:
class UserInfo(models.Model):
name = models.CharField(max_length=32)
password = models.CharField(max_length=64)
age = models.IntegerField()
执行上述命令的时候,相当于执行了以下sql
代码
"""
create table app01_userinfo(
id integer primary key autoincrement,
name varchar(32),
password varchar(64),
age int
)
"""
注意:,这个时候数据库是不存在表的
执行命令创建表,注意:执行命令之前,要注册app
python manage.py makemigrations
python manage.py migrate
再次查看django_learning
数据库中的表信息,app01_userinfo
表已经创建成功:
1.2.4、创建和修改表结构
需要创建表的时候,只需要再次在settings.py
中添加如下代码即可,比如需要创建部门表和角色表
class Department(models.Model):
title = models.CharField(max_length=32)
class Role(models.Model):
caption = models.CharField(max_length=32)
接着重新执行如下命令
python manage.py makemigrations
python manage.py migrate
查看数据库表信息,创建成功
注意,删除表或者字段的时候,只需要把代码注释掉,然后重新执行命令就行。
1.2.5、增删改查
1.2.5.1 增加数据
在urls.py
中添加以下代码
path("orm/", views.orm),
在views.py
中添加以下代码
def orm(request):
Department.objects.create(title='销售部')
Department.objects.create(title='IT部')
Department.objects.create(title='运行部')
return HttpResponse("成功")
启动django程序
python manage.py runserver
浏览器访问http://127.0.0.1:8000/orm/
查看app01_department
表中是否有数据
接着向userinfo
表中添加数据
def orm(request):
# Department.objects.create(title='销售部')
# Department.objects.create(title='IT部')
# Department.objects.create(title='运行部')
UserInfo.objects.create(name="张三", password="123", age=18)
UserInfo.objects.create(name="李四", password="123", age=18)
return HttpResponse("成功")
刷新浏览器,查看数据
1.2.5.2 删除数据
def orm(request):
# 删除id为2的数据
UserInfo.objects.filter(id=2).delete()
# 删除所有数据
Department.objects.all().delete()
return HttpResponse("成功")
修改代码之后,刷新浏览器,重新查看数据库中的数据
1.2.5.3 获取数据
添加如下代码:
def orm(request):
data_list = UserInfo.objects.all()
for data in data_list:
print(data.id, data.name, data.password, data.age)
return HttpResponse("成功")
刷新浏览器之后,查看控制台的输出
根据id获取数据,当你确定数据只有一行的时候,可以使用.first()
来直接获取数据对象,而不是data_list
def orm(request):
data_list = UserInfo.objects.all()
for data in data_list:
print(data.id, data.name, data.password, data.age)
data = UserInfo.objects.filter(id=3).first()
print(data.id, data.name, data.password, data.age)
return HttpResponse("成功")
1.2.5.4 修改数据
可以全部修改,也可以根据id
条件修改
def orm(request):
# 更新所有的
UserInfo.objects.all().update(password='999')
UserInfo.objects.filter(id=3).update(password='Lisi123')
return HttpResponse("成功")
刷新浏览器,查看数据信息,修改成功