基于Pycharm的Django学习
ORM是个啥?
ORM,对象关系映射(Object Relational Mapping,简称ORM)模式,是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。
也就是说,ORM充当一个翻译的功能。
安装第三方库
pip install mysqlclient
创建数据库
ORM到底能够帮助我们做什么呢?
- 创建、删除、修改数据库中的表(不用你写SQL语句),但是无法帮助你创建数据库。
- 操纵表中的数据(不用你写SQL语句)。
所以你自己得先创建数据库。
启动MySQL服务,大家可以看我之前的博客奥。
戳链接:启动MySQL服务
我的数据库django创建好了!
Django连接数据库
在Django项目中,我们可以看到,其settings.py配置文件中,有默认的数据库设置,但是其为sqlite3,一个轻量级的数据库,但是我们不想要这个数据库,我们想使用Mysql数据库。
将上述的注释掉,换成如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
# 数据库名字
'NAME':'写自己的名字',
# 用户名
'USER': 'root',
# 密码
'PASSWORD': '写自己的密码',
# 主机
'HOST': 'localhost',
# 端口
'PORT': '3306',
}
}
操作表
然后我们就需要创建表、删除表、修改表了。
在models.py中:
# 定义的类必须继承models.Model这个类
class UserInfo(models.Model):
name = models.CharField(max_length=32)
password = models.CharField(max_length=64)
age = models.IntegerField()
"""
这样orm就会帮助我们创建表:
表名 app_userinfo APP名字_类名
字段 name varchar(32) password varchar(64) age int
"""
但是现在,我们数据库中仍然什么都没有,我们需要去执行命令!
python manage.py makemigrations
python manage.py migrate
如果我想增加、或者删除表或者字段,就只需要在models.py中操作,然后再执行上述两个命令就好啦。一定要及时执行上述两个命令!
操作表数据
为了操作表数据,我专门写了一个测试函数。
注意在引入models.py的时候注意写法!
错误示范:
正确示范:
增加表数据:
# 增加表数据
models.UserInfo.objects.create(name="王晓曼", password="666", age=20)
models.UserInfo.objects.create(name="冷亦兮", password="123", age=19)
models.UserInfo.objects.create(name="谷爱凌", password="111", age=18)
一不小心增加了两次:注意运行后,这个地方需要点击空白处,右键进行刷新奥。
删除表数据:
删除表数据有两种,一种是筛选后再删除,一种是删除所有,由于删除所有太可怕,所以我这里没有演示!
# 删除表数据
models.UserInfo.objects.filter(id=6).delete() # 筛选条件后删除
models.UserInfo.objects.all().delete() # 删除所有
查找表数据:
删除数据有两种方法,其实那两种方法也是对应的查找的两种方法,因为是要先查找再删除的。很多注意事项,都在注释里面写了。
# 查看表数据
# data_list是一个queryset类型 类似于一个列表 [行对象,行对象,……]
data_list = models.UserInfo.objects.all()
print(type(data_list))
# 对于queryset类型的data_list 也可以使用for循环取出数据
for obj in data_list:
print(obj.id, obj.name, obj.password, obj.age)
# 尽管只有一条数据 data_id_1是一个queryset类型
data_id_1 = models.UserInfo.objects.filter(id=1)
print(type(data_id_1))
# 如果想直接取出其中的那一条数据 需要加上first()
data_id_2 = models.UserInfo.objects.filter(id=2).first()
print(type(data_id_2))
修改表数据:
查找数据有两种方法,其实那两种方法也是对应的修改的两种方法,因为是要先查找再修改的。
# 修改表数据
models.UserInfo.objects.all().update(age=20)
models.UserInfo.objects.filter(id=5).update(age=30)
是不是学完后感觉很简单呢?!
请问您实现了SQL自由吗~