Django之ORM

什么是ORM

  ORM全称是:Object Relational Mapping(对象关系映射),其主要作用是在编程中,把面向对象的概念跟数据库中表的概念对应起来。举例来说就是,我定义一个对象,那就对应着一张表,这个对象的实例,就对应着表中的一条记录。

  在操作数据库时,不用再写SQL语句就能操作数据库。

 

 

 

使用ORM创建表的操作

  在应用的models.py里操作

复制代码
# 创建表
class User(models.Model):
# 创建字段
# id = models.AutoField(primary_key=True, verbose_name='主键')
username = models.CharField(primary_key=True, max_length=32, verbose_name='用户名')
password = models.IntegerField(verbose_name='密码')
# gender = models.CharField(max_length=32, verbose_name='性别')
# hobby = models.CharField(max_length=32, default='red', verbose_name='爱好')
# age = models.IntegerField(null=True,verbose_name='年龄')
复制代码

 

PS: 如果你的主键名时id时,可以不写,django会自动帮你创建一个主键名为id的字段,并且自增,字符串字段的max_length必须写,否则会报错,verbose_name是该字段的注释。

  代码写好之后,在命令行中输入 python3 manage.py makemigrations 这是创建迁移记录

                  python3 manage.py migrate 这一步才是创建表

  也可以在 tools =》 RUN  manage.py TASK中输入命令,在这里面前缀可以不加,直接写后面的代码即可,pycharm还会有提示功能

使用ORM对表的增删改查

  和创建表一样,直接再models.py中操作,增加字段就使用上面的操作,修改表直接修改表里的代码即可,删除将代码注释掉即可

  注意!对数据库进行操作之后,想要保存修改后的表必须在命令行中输入python3 manage.py makemigrations和 python3 manage.py migrate

  只有输入了这两个命令,表的操作才会被修改。

 

使用ORM对数据的增删改查

  增

复制代码
# 第一种方式
# models.表名.object.create(字段名1=数据1,字段名2=数据2)
res=models.User.objects.create(username='jack', password=123)
'''
 返回值是当前插入的数据对象
'''

# 第二种方式

res=models.USER(username='jack',password=123)
res.save()
复制代码

  查

复制代码
# 查找所有数据,返回一个列表,列表里可以看作是一个个对象,可以使用索引取得对象
res=models.User.object.filter().all.()
res=models.User.object.filter()

# 查找字段名username='jack'的数据列表
res=models.User.object.filter(username='jack')

# 获得字段名为id=1的数据对象
#方式1
obj=models.User.object.filter(id=1).first()
#方式2
obj=models.User.object.filter(id=1)[0]
复制代码

  改

# 查找数据库中字段名username为jack的数据,将该行的数据改成username改成jerry,password改成123
res = models.User.objects.filter(username='jack').update(username=jerry, password=123)

#该返回值是数据库影响的行数

  删

# 查找数据库中字段名username为jack的数据,将改行数据删除
models.User.objects.filter(username=jack).delete()

 

ORM创建表关系

  一对多(在多的表中书写)

# 关联字段名 = models.ForeignKey(to='被关联表名',to='被关联表明的关联字段')
publish_id = models.ForeignKey(to='Publish') # 如果关联的是id字段,那么可以省略不写

  一对一(在任意一张表中书写即可)

# 关联字段名 = models.OneToOneField(to='被关联字段名')
author_detail = models.OneToOneField(to='AuthorDetail')

  多对多

# 关联字段名 = models.ManyToManyField(to='被关联字段名')
 authors = models.ManyToManyField(to='Author')

 

posted @   椰子皮0oo0  阅读(54)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
1
点击右上角即可分享
微信分享提示