Secra Database
一个基于 SeaORM 的 Rust 数据库连接和管理库,提供数据库连接、连接池、Schema 和表管理功能。
功能特性
- ✅ 数据库连接管理(PostgreSQL、MySQL、SQLite)
- ✅ 连接池管理和监控
- ✅ Schema 管理(PostgreSQL)
- ✅ 表信息查询和管理
- ✅ 安全的 URL 编码和配置验证
- ✅ 支持 PgBouncer
- ✅ 完整的错误处理
安装
在 Cargo.toml 中添加依赖:
[]
= { = "../secra-database" }
# 或者从 git 仓库
# secra-database = { git = "https://github.com/your-org/secra-database" }
快速开始
基本连接
use ;
async
自定义连接选项
use ;
let config = DatabaseConfig ;
let options = ConnectionOptions ;
let db = init.await?;
连接池监控
use ConnectionPoolService;
// 获取连接池统计信息(需要提供最大和最小连接数)
let stats = get_pool_stats.await?;
println!;
Schema 管理
use SchemaService;
// 获取所有 Schema
let schemas = list_schemas.await?;
// 获取指定 Schema 信息
let schema_info = get_schema_info.await?;
表管理
use TableService;
// 获取所有表
let tables = list_tables.await?;
// 获取表信息
let table_info = get_table_info.await?;
// 获取表列信息
let columns = get_table_columns.await?;
模块说明
- connection: 数据库连接管理,包括配置、连接创建和验证
- pool: 连接池管理和统计
- schema: Schema 管理(PostgreSQL)
- table: 表信息查询和管理
- models: 数据库模型相关功能
配置说明
DatabaseConfig
database_type: 数据库类型("postgres", "mysql", "sqlite")host: 数据库主机地址port: 数据库端口username: 数据库用户名password: 数据库密码database_name: 数据库名称schema: 默认 Schema(PostgreSQL,默认为 "public")logging_level: 日志级别("off", "error", "warn", "info", "debug", "trace")use_pgbouncer: 是否使用 PgBouncer(默认为 false)
ConnectionOptions
max_connections: 最大连接数(默认 300)min_connections: 最小连接数(默认 5)connect_timeout: 连接超时时间(秒,默认 8)acquire_timeout: 获取连接超时时间(秒,默认 8)idle_timeout: 空闲连接超时时间(秒,默认 600)max_lifetime: 连接最大生命周期(秒,默认 1800)sqlx_logging: 是否启用 SQL 日志(默认 true)
安全性
- ✅ Schema 名称验证,防止 SQL 注入
- ✅ URL 编码,确保特殊字符正确处理
- ✅ 配置验证,确保输入有效性
- ✅ 日志脱敏,避免密码泄露
支持的数据库
- PostgreSQL(完整支持)
- MySQL(基本支持)
- SQLite(基本支持)
运行示例
项目包含多个示例代码,演示如何使用库的各种功能:
# 基本连接示例
# 自定义连接选项示例
# 连接池监控示例
注意:运行示例前,请确保:
- 已安装并运行相应的数据库(PostgreSQL/MySQL/SQLite)
- 修改示例中的数据库连接配置(主机、端口、用户名、密码等)
运行测试
# 运行所有测试
# 运行特定模块的测试
许可证
[在此添加许可证信息]
贡献
欢迎提交 Issue 和 Pull Request!