Django框架学习日寄(三)——ORM框架
Django框架学习日寄(三)——ORM框架
绪
可以通过pymysql
模块实现,但是Django有ORM
框架, 能更方便地操作数据库.
ORM框架是一种数据库语言解释器, 能兼容不同的数据库, 遍历开发者进行数据库迁移.
MySQL数据库操作(ORM)
前置准备
安装mysqlclient
模块.
pip install mysqlclient
MySQL操作
-
登录MySQL
musql -u root -p
-
查看已有的数据库(文件夹)
show databases;
-
创建数据库(文件夹)
create database <数据库名称> DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
-
删除数据库(文件夹)
drop database <数据库名称>;
-
进入数据库(进入文件夹)
use database <数据库名称>;
-
查看文件夹下所有的数据(文件)
show tables;
ORM
ORM做两件事(无需写数据库语句):
- 创建/修改/删除数据库中的表,但是无法创建数据库.
- 操作表中的数据(CRDU).
创建数据库
-
启动MySQL服务
-
利用MySQL自带工具创建数据库
create database <数据库名称> DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
连接数据库
在settings.py
中配置和修改.
DATABASES = {
"default": {
"ENGINE": "django.db.backends.mysql",
"NAME": "xxx", # 数据库名称
"USER": "root",
"PASSWORD": "xxxx",
"HOST": "xxxx",
"PORT": xxxx,
}
}
操作数据表
在models.py
文件中编写, 通过编写类进行数据表的操作.
数据库创建命令
python manage.py makemigrations
python manage.py migrate
每次数据库表表操作完成之后,需要运行命令来更新数据库.
app需要已注册.
-
创建表
class UserInfo(models.Model): name = models.CharField(max_length=32) password = models.CharField(max_length=64) age = models.IntegerField(default=0)
-
删除表
删除表对应的类即可.
- 修改表
若表中已有数据,Django提供两种修改表(设置新字段的默认值)的方式:
- default, 终端内设置.
- quit,
models.py
内设置.
-
设置默认值
age = models.IntegerField(default=0)
-
允许为空
age = models.IntegerField(null=True, blank=True)
增删改查(CRDU)
数据表(table), 对应类(tableClass).
-
添加数据
tableClass.objects.create(<key>=<value>)
-
删除数据
# 全部删除 tableClass.objects.all().delete() # 过滤,条件删除 tableClass.objects.filter(id=1).delete()
-
修改数据
# 全部修改 tableClass.objects.all().update(<key>=<value>) # 筛选修改 tableClass.objects.filter(<条件>).update(<key>=<value>)
-
查找数据
# 返回queryset类型的数据[行,...行] # 类似列表,每一行都为对象,内部封装了字段, 可用索引获取 # 获取全部数据 data_list = tableClass.objects.all() # 条件查找数据 data_list = tableClass.objects.filter(<条件>) ## 获取第一个匹配的对象 data_list = tableClass.objects.filter(<条件>).first() for obj in data_list: print(obj.id, obj.name, obj.password, obj.age)