| Crates.io | secra-database |
| lib.rs | secra-database |
| version | 0.1.0 |
| created_at | 2025-12-30 08:07:15.971994+00 |
| updated_at | 2025-12-30 08:07:15.971994+00 |
| description | 基于 SeaORM 的 Rust 数据库连接和管理库 |
| homepage | |
| repository | |
| max_upload_size | |
| id | 2012248 |
| size | 119,023 |
一个基于 SeaORM 的 Rust 数据库连接和管理库,提供数据库连接、连接池、Schema 和表管理功能。
在 Cargo.toml 中添加依赖:
[dependencies]
secra-database = { path = "../secra-database" }
# 或者从 git 仓库
# secra-database = { git = "https://github.com/your-org/secra-database" }
use secra_database::{DatabaseConfig, DatabaseService, ConnectionOptions};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let config = DatabaseConfig {
database_type: "postgres".to_string(),
host: "localhost".to_string(),
port: 5432,
username: "user".to_string(),
password: "password".to_string(),
database_name: "mydb".to_string(),
schema: "public".to_string(),
logging_level: "info".to_string(),
use_pgbouncer: false,
};
// 验证配置
DatabaseService::validate_config(&config)?;
// 创建数据库连接
let db = DatabaseService::init(&config, None).await?;
// 测试连接
DatabaseService::test_connection(&db).await?;
Ok(())
}
use secra_database::{DatabaseConfig, DatabaseService, ConnectionOptions};
let config = DatabaseConfig { /* ... */ };
let options = ConnectionOptions {
max_connections: 100,
min_connections: 10,
connect_timeout: 10,
acquire_timeout: 10,
idle_timeout: 600,
max_lifetime: 1800,
sqlx_logging: true,
};
let db = DatabaseService::init(&config, Some(options)).await?;
use secra_database::ConnectionPoolService;
// 获取连接池统计信息(需要提供最大和最小连接数)
let stats = ConnectionPoolService::get_pool_stats(&db, Some(100), Some(5)).await?;
println!("连接池统计: {:?}", stats);
use secra_database::SchemaService;
// 获取所有 Schema
let schemas = SchemaService::list_schemas(&db).await?;
// 获取指定 Schema 信息
let schema_info = SchemaService::get_schema_info(&db, "public").await?;
use secra_database::TableService;
// 获取所有表
let tables = TableService::list_tables(&db, Some("public")).await?;
// 获取表信息
let table_info = TableService::get_table_info(&db, Some("public"), "users").await?;
// 获取表列信息
let columns = TableService::get_table_columns(&db, Some("public"), "users").await?;
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)max_connections: 最大连接数(默认 300)min_connections: 最小连接数(默认 5)connect_timeout: 连接超时时间(秒,默认 8)acquire_timeout: 获取连接超时时间(秒,默认 8)idle_timeout: 空闲连接超时时间(秒,默认 600)max_lifetime: 连接最大生命周期(秒,默认 1800)sqlx_logging: 是否启用 SQL 日志(默认 true)项目包含多个示例代码,演示如何使用库的各种功能:
# 基本连接示例
cargo run --example basic_connection
# 自定义连接选项示例
cargo run --example custom_options
# 连接池监控示例
cargo run --example pool_monitoring
注意:运行示例前,请确保:
# 运行所有测试
cargo test
# 运行特定模块的测试
cargo test --lib connection
[在此添加许可证信息]
欢迎提交 Issue 和 Pull Request!