django学习:ORM实现数据库的连接、表的创建与增删改查

2024-01-08 06:08:25

1.ORM机制

Django 是一个流行的 Python Web 框架,它提供了一个强大的 ORM(对象关系映射)机制,用于管理应用程序和数据库之间的数据交互。

ORM 是一种编程技术,它将数据库表的结构和数据转换为面向对象的模型,使开发者能够使用类和对象的方式来操作数据库,而不需要直接编写 SQL 查询语句。这简化了开发过程,提高了代码的可读性和可维护性。

Django 的 ORM 提供了一系列的 API 和工具,让开发者能够轻松地进行数据库操作,包括创建、读取、更新和删除数据,以及执行复杂的查询操作。以下是 Django ORM 的一些主要特点和功能

2.数据表的创建

1.首先,在django的app下的models.py文件中创建一个类,这个类中的字段就是所要创建数据表的字段,例如:

2.执行如下指令:

python manage.py makemigrations
python manage.py migrate

3.数据库变化

以上1.2步骤执行前:

以上1.2步骤执行后:

3.数据表的删除

ORM机制提供关于数据表的删除:只需将表所对应的类注释掉即可

例如以上定义的app01_UserInfo注释以后:

再执行

python manage.py makemigrations
python manage.py migrate

这样表就被删除了。

4.新增表中的数据项

以下例子为了方便调试,在不执行python manage.py makemigrations和python manage.py migrate的情况下也可以完成测试。

1.首先在views中导入models的相关内容:

2.在views中定义一个orm视图函数,当浏览器发起请求时,执行视图函数中的内容:

3.新增表中数据项的指定如下:类名 .objects.create(数据项),如下所示:

UserInfo.objects.create(name="qingpeng", password="123456", age=26)

5.删除表中的数据项

例如:如下图对于表中id=2存在和id=1数据相同情况。

orm机制提供的删除指定如下:类名 .objects.filter(条件).delete()

 # 删除id=2的重复数据项
    UserInfo.objects.filter(id=2).delete()

再次查看数据表,可见id=2的数据被删除了!

此外,如果需要删除全部数据,应该使用all进行删除:类名.objects.all().delete()

 # 删除全部数据
    UserInfo.objects.all().delete()

删除全部数据项:

6.更新表中的数据项

一、修改全部数据指令:类名.objects.all().update(修改字段= 修改值),如下表示修改表中所有数据的age = 19

 # 修改数据项
    UserInfo.objects.all().update(age=19)

修改命令执行后,如下:

二、按条件修改数据指令:类名.objects.filter(条件).update(修改字段= 修改值),如下表示修改表中所有数据的id = 8的name = 清鹏

修改后效果如下:

7.获取表中的数据项

一、获取全部数据指令:类名.objects.all().,如下表示获取djlearn表中所有数据的指令:

 # 获取数据项
    UserInfo.objects.all()

获取到的数据如下:

显然得到的是一个 QuerySet类类型,要想获得其中的值,需要遍历列表【列表中每一个数据就是一个对象】如下所示:

 # 获取数据
    data_list = UserInfo.objects.all()
    print("获取数据", data_list)
    # 遍历
    for obj in data_list:
        print(obj.name, obj.password, obj.age)

如果你只想获取其中的某条数据,那么可以这样操作:类名.objects.filter(条件).first()

实践:

 # 只获取某条数据(以下获取id=9的数据)
    item = UserInfo.objects.filter(id=9).first()
    print(item.id, item.name, item.password, item.age)

文章来源:https://blog.csdn.net/weixin_52890053/article/details/135373806
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。