# sqlx-xugu **Repository Path**: BrightXu/sqlx-xugu ## Basic Information - **Project Name**: sqlx-xugu - **Description**: 基于 sqlx 的 rust 🦀虚谷数据库驱动 - **Primary Language**: Rust - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-03 - **Last Updated**: 2026-01-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # sqlx-xugu [![github](https://img.shields.io/badge/Github-BrightX/sqlx--xugu-blue?logo=github)](https://github.com/BrightX/sqlx-xugu) [![gitee](https://img.shields.io/badge/Gitee-BrightXu/sqlx--xugu-8da0cb?labelColor=C71D23&logo=gitee)](https://gitee.com/BrightXu/sqlx-xugu) [![crate](https://img.shields.io/crates/v/sqlx-xugu.svg?logo=rust)](https://crates.io/crates/sqlx-xugu) [![documentation](https://img.shields.io/badge/docs.rs-sqlx--xugu-66c2a5?labelColor=555555&logo=docs.rs)](https://docs.rs/sqlx-xugu) [![minimum rustc 1.60](https://img.shields.io/badge/rustc-1.60+-red.svg?logo=rust)](https://rust-lang.github.io/rfcs/2495-min-rust-version.html) ![License](https://img.shields.io/crates/l/sqlx-xugu) > 基于 `sqlx` 的 `rust` 虚谷数据库驱动。 > > 支持虚谷数据库 `v11`/`v12`。 ## Install 添加依赖,注意版本要跟 `sqlx` 保持一致 ```toml # Cargo.toml sqlx = { version = "=0.8.6", features = ["runtime-tokio"] } sqlx-xugu = { version = "0.8.6-2" } ``` #### Cargo Feature Flags 添加 feature, 注意要跟 `sqlx` 保持一致 ```toml # Cargo.toml sqlx = { version = "=0.8.6", features = ["runtime-tokio", "chrono", "uuid", "rust_decimal", "bigdecimal", "time"] } sqlx-xugu = { version = "0.8.6-2", features = ["chrono", "uuid", "rust_decimal", "bigdecimal", "time"] } ``` - `uuid`: 添加对 UUID 的支持。 - `chrono`: 添加对 `chrono` 中的日期和时间类型的支持。 - `time`: 添加对 `time` crate 中的日期和时间类型的支持 (alternative to `chrono`, which is preferred by `query!` macro, if both enabled) - `bigdecimal`: 使用 `bigdecimal` crate 添加对 `NUMERIC` 的支持。 - `rust_decimal`: 使用 `rust_decimal` crate 添加对 `NUMERIC` 的支持。 - `json`: 使用 `serde_json` crate 添加对 `JSON` 的支持。 ## Usage ### 快速入门 ```rust use sqlx_xugu::XuguPoolOptions; #[tokio::main] // Requires the `attributes` feature of `tokio` // or #[async_std::main] // or #[actix_web::main] async fn main() -> Result<(), sqlx::Error> { // Create a connection pool // for Xugu, use XuguPoolOptions::new() let pool = XuguPoolOptions::new() .max_connections(5) .connect("xugu://user:password@127.0.0.1:5138/SYSTEM").await?; // 进行简单的查询以返回给定的参数 (使用问号 `?` 占位符) let row: (i64,) = sqlx::query_as("SELECT ?") .bind(150_i64) .fetch_one(&pool).await?; assert_eq!(row.0, 150); Ok(()) } ``` ### 建立连接 可以使用 `XuguConnection` 并调用 `connect()` 建立单个连接。 ```rust use sqlx::Connection; use sqlx_xugu::XuguConnection; let conn = XuguConnection::connect("xugu://user:password@127.0.0.1:5138/SYSTEM").await?; ``` 通常,您需要为应用程序创建一个连接池 (`sqlx::Pool`) 来调节它正在使用的服务器端连接数。 ```rust let pool = XuguPool::connect("xugu://user:password@127.0.0.1:5138/SYSTEM").await?; // 指定连接池大小和连接时间等参数 let pool = XuguPoolOptions::new() .max_connections(50) .acquire_timeout(std::time::Duration::from_secs(5)) .idle_timeout(std::time::Duration::from_secs(300)) .max_lifetime(std::time::Duration::from_secs(86400)) .connect("xugu://user:password@127.0.0.1:5138/SYSTEM?ssl=ssl") .await?; ``` sqlx-xugu 驱动url格式,支持以下几种 ``` 1. xugu://ip:port/databaseName[?property=value[&property=value]] * 例:xugu://127.0.0.1:5138/SYSTEM?user=GUEST&password=GUEST&version=301&time_zone=GMT 2. xugu://user:passwd@ip:port/databaseName[?property=value[&property=value]] * 例:xugu://GUEST:GUEST@127.0.0.1:5138/SYSTEM?version=301&time_zone=GMT ``` #### 连接参数 | 参数名 | 说明 | 初始值 | |:----------------|:---------------------------------------------------------------------------------------------------------------------------|:-------------------| | database | 数据库名 | | | user | 用户名 | | | password | 用户密码 | | | version | 服务器版本 | 301 | | encryptor | 数据库解密密钥 | | | charset | 客户端字符集(**utf8**或**gbk**) | utf8 | | lob_ret | 大对象返回方式 | | | time_zone | 客户端时区 | | | iso_level | 事务隔离级别 | READ COMMITTED读已提交 | | lock_timeout | 最大加锁等候时间 | | | auto_commit | 是否自动提交 | on | | return_rowid | 是否返回**rowid** | false | | return_schema | 查询**SQL**是否返回模式信息(此参数存在一个疑问) | on | | identity_mode | 数据库服务端自增长使用模式(**DEFAULT**:**default**自增,**NULL_AS_AUTO_INCREMENT**:**NULL**自增,**ZERO_AS_AUTO_INCREMENT**:**0**和**NULL**自增) | | | keyword_filter | 数据库连接配置连接上需要开放的关键字串,已逗号分隔,例如**TABLE,FUNCTION,CONSTANT** | | | disable_binlog | 不记载**binlog**日志 | | | current_schema | 指定连接的模式名 | | | compatible_mode | 适配其他数据库(**MySQL/ORACLE/PostgreSQL**) | NONE | | use_ssl | 是否开启传输数据加密保护 `on`: 启用加密,`off`: 禁用加密 | off | | ssl | 同上 `ssl=ssl`: 启用加密,`ssl=nssl`: 禁用加密 | nssl | ### 更多请参考 `sqlx` 相关文档 * `docs.rs`: https://docs.rs/sqlx/latest/sqlx/ * `Github`: https://github.com/launchbadge/sqlx * `crates.io`: https://crates.io/crates/sqlx ## 联系方式 - **Bug 反馈**: [GitHub Issues](https://github.com/BrightX/sqlx-xugu/issues) - **一般讨论**: [GitHub Discussions](https://github.com/BrightX/sqlx-xugu/discussions) - **商务合作**: [BrightXu666@163.com](mailto:BrightXu666@163.com) ## 许可证 [MIT](https://opensource.org/license/mit) or [Apache 2.0](https://opensource.org/licenses/Apache-2.0) ### 免责声明 **sqlx-xugu** 跟 **成都虚谷伟业科技有限公司** 不构成任何知识产权归属关系。这个程序不含任何担保。 软件以“现状”提供,不提供任何明示或暗示的保证,包括但不限于可销性、特定用途适用性和非侵权等保证。 无论如何,作者或版权持有人对因软件或软件使用或其他交易产生的、涉及合同、侵权或其他诉讼的索赔、损害或其他责任均不承担责任。