全景
这一部分先回答「sea-orm 是什么」,再把查询主线从头到尾走一遍,后面各章都从这里出发。
- sea-orm 解决什么问题:「async & dynamic」两个词各落在哪;查询是运行期的值,按条件拼查询就是普通的
if;和 sqlx 比检查对着谁(数据库还是 Rust 里的实体),实验看列名写错、实体和库不一致、值类型不对分别在什么时候报错;和 diesel 比列是类型还是值;Model与ActiveModel;sea-query 为什么单独成库;dense 和展开两种实体写法。 - 一次 find 的全过程:
cake::Entity::find_by_id(1).one(&db)从Select到Model;抓包看到实际发出的是... WHERE "cake"."id" = $1 LIMIT $2,LIMIT是int8参数;query_one里才选方言;驱动里query_with+ 每条语句一次pool.acquire(),用池的计数和pg_backend_pid()证明连续两条语句可能落在不同的连接上。
flowchart TB why["sea-orm 解决什么问题"] --> one["一次 find 的全过程"] one --> entity["02 实体"] one --> sq["03 sea-query"] one --> conn["06 连接与事务"]
💬 关联讨论
发起讨论加载中...