Skip to main content

Module any_driver

Module any_driver 

Source
Expand description

Any driver — 一套代码多 DB 后端透明切换(SQLx 风格)

SQLx 提供 sqlx::Any 适配器,让同一份代码可以在 MySQL/PostgreSQL/SQLite 之间透明切换。SZ-ORM 在 sz-orm-sqlx 已有各后端独立实现, 此模块在上层提供统一的 AnyConnectionAnyPool 抽象, 让运行时切换数据库后端成为可能。

§设计

  • 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
数据库后端类型