对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。
准备工作:创建项目
在终端中输入:django-admin startapp Item_2
打开项目目录下的setting.py文件,找到INSTALLED_APPS,在里面添加上Item_2。
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'Item_2', ]
创建模型
我们主要是在应用项目Item_2下的models.py文件下建立的。
在models.py文件中定义一个Card类
创建类
class Card(models.Model):
name=models.CharField(max_length=25) #定义name为CharField类型(相当于字符串类型)长度不超过25
msg=models.TextField() #msg为TextField类型,长度可以不用写,是很长的
rating=models.IntegerField(default=0) #rating为IntegerField类型(相当于整型)从0开始
我们定义的这3个类会通过orm对应在mysql中形成一个表格,里面有3个字段。
迁移操作
在终端中输入:
python .\manage.py makemigrations # 生成迁移对象
python .\manage.py migrate #在进行迁移
在数据库中展示
在打开mysql,登录即可查看,我们创建的表格。
登录用户:mysql -uyyy -p #yyy是用户名
输入你的密码:
展示数据库:show databases;
进入数据库:use 数据库的名字;
查看数据库中的表:show tables; #看到系统自动给我们创建了一个以项目+类名为名的表Item_2_card。
查看表的结构:desc 表名;
可看出表中有我们创建的三个字段,其中id是系统自动给予的。
则我们可看出orm可以将面向对象映射到数据库中。(在类中定义的变量--转换到数据库中--形成对应字段的表格)
修改表的名字
在定义的Card类下面,在定义一个Meta类,通过db_table对命名
应为对其修改了名字,所以要重新对其迁移
在终端中输入:
python .\manage.py makemigrations
python .\manage.py migrate
在mysql中查看表
查看ITEM_2_CARD表的结构
shell
在终端中输入:
python manage.py shell
from Item_2.models import Card #在引入Card
card=Card(name='abc_1',msg='hello,我是abc_1',rating=26) #现在表格中添加一些数据,
card.save() #不要忘记,将其保存下来
打开mysql,查看表中的信息:
select * from ITEM_2_CARD;
可看到我们添加的信息。
__str__
我们也可以在终端中查看到信息
在终端中输入:
Card.objects.all()
则可看到,我们拿到的是一个对象。
我们可以在Card类里面定义一个__str__的函数
注意:__str__不需要迁移
要重新退出,重新进入shell
在终端中输入:
exit() #退出
python .\manage.py shell
from Item_2.models import Card
Card.objects.all()
则我们可以看到返回了msg的信息。