Expand description
Any driver — 一套代码多 DB 后端透明切换(SQLx 风格)
SQLx 提供 sqlx::Any 适配器,让同一份代码可以在 MySQL/PostgreSQL/SQLite
之间透明切换。SZ-ORM 在 sz-orm-sqlx 已有各后端独立实现,
此模块在上层提供统一的 AnyConnection 和 AnyPool 抽象,
让运行时切换数据库后端成为可能。
§设计
AnyBackend:枚举后端类型AnyPool:持有具体后端的Box<dyn ConnectionFactory>AnyConnection:持有具体后端的Box<dyn Connection>- 通过 DSN 自动识别后端类型,运行时透明切换
§用法
ⓘ
use sz_orm_sqlx::any_driver::{AnyBackend, AnyPool};
// 从 DSN 自动识别后端
let pool = AnyPool::connect("mysql://root:pass@127.0.0.1/db").await?;
let mut conn = pool.create().await?;
let rows = conn.query("SELECT 1").await?;
// 运行时切换后端
let pg_pool = AnyPool::connect("postgres://user:pass@127.0.0.1/db").await?;
let mut pg_conn = pg_pool.create().await?;
let rows = pg_conn.query("SELECT 1").await?;Structs§
- AnyConnection
- 后端无关的连接
- AnyPool
- 后端无关的连接工厂
Enums§
- AnyBackend
- 数据库后端类型