ORM的基础操作 - 指南
ORM的功能:
- 创建、修改、删除数据库中的表(不用写mysql语句),但是无法创建数据库
- 操作表中的数据(不用写mysql语句)
一、安装第三方模块
1.方法一:
在pycharm中,打开终端,输入pip install mysqlclient。如图:
注意:在windows系统中可能会安装失败,失败则采用方法二
2.方法二
在浏览器中搜索mysqlclient wheel,并下载。如图:
二、django链接数据库
在setting.py中找到mysql连接的代码,并将其修改为自己的数据库
代码如下:
DATABASES = {
'default':{
'ENGINE': 'django.db.backends.mysql',
'NAME': 'lgq',# 连接的数据库名字
'USER': 'root',# 账号
'PASSWORD': '123456',# 密码
'HOST': '127.0.0.1',# 本地用户
'POST': '3306'
}
}
结果如图所示
三、django操作表
在models.py中写入操作代码
创建表
代码如下
class UserInfo(models.Model):
name = models.CharField(max_length=32)
password = models.CharField(max_length=64)
age = models.IntegerField()
相当于执行MySQL中的创建代码,对应如下
create table app01_userinfo(
id bigint auto_increment primary key,
name varchar(32),,
password varchar(64),
age int
)
在models.py中输入后,打开终端,输入python manage.py makemigrations并回车后输入python manage.py migrate并回车
创建完,打开数据库看是否生成对应表,如图
操作表
- 想要创造新表,直接在
models.py中加入新的类并执行打开终端,输入python manage.py makemigrations并回车后输入python manage.py migrate并回车操作即可
如图
然后创建成功,如图
- 删除表同理(删除类,终端输入命令)
操作表中信息
- 删除表中某一列,操作与删除表同类(在类中删除相对于代码,然后在终端执行命令)
- 创建新信息(在表中新增列时,由于已存在的列中可能有数据,所以新增列必须指定新列对应的数据)
- 方法一:在操作完类之后,输入
python manage.py makemigrations后会出现选项,选择1回车,然后手动输入一个值。如图
- 方法二:设置默认值,如
age = models.IntegerField(default=1) - 方法三:允许为空,如
data = models.IntegerField(null = Ture, black = Ture)
- 方法一:在操作完类之后,输入
四、操作表中的数据
表中新增数据
- 第一步:在
view.py中导入你需要引用的类名如:from app01.models import UserInfo - 第二步:建立
urls.py与views.py之间的联系,如:在views.py中新建orm类,并在urls.py中的urlpatterns中添加path("orm/", views.orm) - 第三步:在
views.py中的orm类中输入需要增加数据的代码如图
- 第四步:在
orm中添加网页代码如return HttpResponse("成功") - 第五步:在终端输入运行代码
python manage.py runsever并访问orm
最后生成在对应的数据库中生成相对应的数据,如图
注意:我这个是运行了两次生成的数据
删除数据
- 筛选删除:与新增同理,区别只有第三步中在
views.py中的orm类写入删除代码,如:UserInfo.objects.filter(name="贤者").delete()后续步骤与新增同理。删除结果如图
- 全部删除:步骤与筛选删除一致,代码使用
UserInfo.objects.all().delete(),就可以将表中所有数据删除。
筛选数据
- 选择一个表中的所有信息:步骤之前新增,删除数据一致,只有第三步中代码不同
data_list=UserInfo.objects.all(),注意返回对象是QuerySet类型,相当于data_list=[行数据,行数据,行数据]形式,想要输出需要使用遍历代码,如:
for obj in data_list:
print(obj.id, obj.name, obj.password, obj.age)
- 筛选某一数据:步骤一致,代码使用
data_list=UserInfo.objects.filter(id=1),注意不管有几个数据都是使用QuerySet类型接收,想要输出也需要遍历 - 获取第一条数据:使用代码
row_obj = UserInfo.objects.filter(id=1).first(),想要输出使用代码print(row_obj.id, row_obj.name, row_obj.password, row_obj.age)
更新数据
- 更新某一列的所有数据:步骤一致,使用代码
UserInfo.objects.all().update(想要更新的数据),如:UserInfo.objects.all().update(password=999) - 更新筛选出来的数据:步骤一致,使用代码
UserInfo.objects.filter(id=1).update(age=30)

浙公网安备 33010602011771号