ORM的增删改查

增:添加数据

        利用模型类创建对象来进行增加

                1、语法
                2、对象名 = 模型类(字段=值)  需要自己手动保存
                3、对象名.save()

        利用模型类管理器增加数据

模型类.objects.create(字段=值...)

        利用模型类创建对象进行删除

对象名 = 模型类.objects.get(条件)
对象名.delete()

        利用模型类管理器删除数据

模型类.objects.get、filter(条件).delete()
删除不存在的数据会报错

        利用模型类创建对象进行修改

对象名 = 模型类.objects.get(条件)
对象名.字段 = 值
对象名.save()  # 保存修改的信息

        利用模型类管理器修改数据

模型类.objects.filter(条件).update()

        all()

模型类.objects.all()  查询全部数据

        get()

模型类.objects.get(条件)   get:只能获取单条数据,如果查询的结果超过1条数据,报错

         filter()

模型类.objects.filter(条件)  filter:查询得到的是一个结果集 可以查询多条数据,单条数据

        exclude()

模型类.objects.exclude(条件)  exclude:查询和条件相反的数据(不满足条件的数据)

        条件查询

                1、等值查询    =

                2、查询id大于2的数据 gt

Register.objects.filter(id__gt=2)
模型类.objects.filter(字段__gt=值)

                3、查询id小于3的数据   lt

Register.objects.filter(id__lt=3)
模型类.objects.filter(字段__lt=值)

                4、查询名字为张三的个数 统计个数   count

Register.objects.filter(name="张三").count()
模型类.objects.filter(条件).count()

                5、按照id降序进行排序 order_by

模型类.objects.all().order_by("字段")  升序
模型类.objects.all().order_by("-字段") 降序
可以写all()也可以不写

                6、查询名字以张开始的

Register.objects.filter(name__startswith="张")
模型类.objects.filter(字段__startswith="值")

下面是一个简单的 `sea_orm` CRUD 操作的示例。 首先,我们需要创建一个数据库模型,用于描述数据库中的表和列。以下是一个示例模型: ```rust use sea_orm::{Database, EntityTrait, FromQueryResult, IntoActiveModel, QueryFilter, QueryOrder, SeaRc, SetTrait}; #[derive(Clone, Debug, PartialEq, DeriveEntityModel)] #[sea_orm(table_name = "users")] pub struct UserModel { #[sea_orm(primary_key)] pub id: i32, pub name: String, pub email: String, pub age: i32, } ``` 在上面的代码中,我们定义了一个名为 `UserModel` 的实体模型,它对应了数据库中的 `users` 表,包含了 `id`、`name`、`email` 和 `age` 四个列,并将 `id` 列标记为主键。 接下来,我们可以使用 `sea_orm` 提供的 API 来执行 CRUD 操作。以下是一个示例代码,演示了如何使用 `sea_orm` 进行增删改查操作: ```rust use sea_orm::{DbConn, IntoActiveModel, QueryFilter}; // 连接到数据库 let db = DbConn::connect("mysql://root:password@localhost:3306/mydb").await?; // 插入一条新记录 let new_user = UserModel { id: 1, name: "Alice".to_owned(), email: "alice@example.com".to_owned(), age: 25, }; let inserted_user = new_user.clone().into_active_model(); let inserted_user = UserModel::insert(inserted_user).exec(&db).await?; // 根据主键查询记录 let user = UserModel::find_by_id(inserted_user.id).one(&db).await?; assert_eq!(user, inserted_user); // 更新记录 let updated_user = UserModel { id: inserted_user.id, name: "Bob".to_owned(), email: "bob@example.com".to_owned(), age: 30, }; let updated_user = updated_user.clone().into_active_model(); let updated_user = UserModel::update(updated_user).exec(&db).await?; // 再次查询记录,验证是否更新成功 let user = UserModel::find_by_id(updated_user.id).one(&db).await?; assert_eq!(user, updated_user); // 删除记录 let deleted_user = UserModel::delete() .filter(UserModel::id.eq(updated_user.id)) .exec(&db) .await?; assert_eq!(deleted_user, 1); ``` 在上面的代码中,我们首先连接到了数据库,然后使用 `into_active_model` 方法将一个 `UserModel` 结构体转换为一个 `ActiveModel<UserModel>`,从而能够进行插入操作。接着,我们使用 `find_by_id` 方法根据主键查询记录,使用 `update` 方法更新记录,使用 `delete` 方法删除记录。 需要注意的是,在执行 CRUD 操作时,我们需要使用 `exec` 或 `one` 方法来执行查询或修改操作。这些方法会返回一个 `Result` 或 `Result<Option<T>>` 对象,我们可以使用 `?` 运算符来处理错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值